如何移除TXT文件日期内的逗号以适配pd.read_csv导入Pandas?
问题
我有一个包含如下格式日期列的TXT文件:
May 15, 2023, May 22, 2023 August 14, 2023, August 21, 2023 November 14, 2023, November 21, 2023 February 14, 2024, February 22, 2024
日期中日和年之间的逗号导致难以使用pd.read_csv()将数据导入Pandas。文件中还有需忽略的其他数据,因此无法对整个文档执行操作。我需要遍历文件,找到该格式的日期,移除日期内的逗号,同时保留日期之间的逗号,请问有什么简单的实现方法?
解决方案
用Python的re模块写个正则表达式就能精准搞定——只替换日期内部的逗号,完全不碰日期之间的分隔逗号。
思路
核心是匹配「日, 年」这种结构里的逗号,把15, 2023改成15 2023,而2023, May这种日期之间的逗号保留不动。提供两种正则策略,按需选择:
- 通用版:匹配所有「数字, 四位年份」的结构,适合确认其他内容不会有类似格式的场景
- 精准版:匹配完整的「月份 日, 年」结构,避免误改无关内容
代码实现
通用版(简单快速)
import re import pandas as pd # 匹配「数字, 四位年份」的正则 pattern = re.compile(r'(\d+), (\d{4})') processed_lines = [] with open('your_file.txt', 'r', encoding='utf-8') as f: for line in f: # 只替换每行里日期内部的逗号 fixed_line = pattern.sub(r'\1 \2', line) processed_lines.append(fixed_line) # 写入处理后的文件 with open('fixed_dates.txt', 'w', encoding='utf-8') as f: f.writelines(processed_lines) # 正常导入Pandas df = pd.read_csv('fixed_dates.txt', sep=',') # 可根据实际数据调整参数
精准版(避免误替换)
如果文件里其他内容也有「数字, 四位年份」的结构,就用这个匹配完整英文月份的正则:
import re import pandas as pd # 匹配「英文月份 日, 年」的完整结构 pattern = re.compile(r'([A-Z][a-z]+) (\d+), (\d{4})') processed_lines = [] with open('your_file.txt', 'r', encoding='utf-8') as f: for line in f: fixed_line = pattern.sub(r'\1 \2 \3', line) processed_lines.append(fixed_line) # 写入和导入步骤同上 with open('fixed_dates.txt', 'w', encoding='utf-8') as f: f.writelines(processed_lines) df = pd.read_csv('fixed_dates.txt', sep=',')
处理后,日期内部的逗号会被彻底移除,日期之间的分隔逗号完全保留,能直接用pd.read_csv()正常导入数据。
内容的提问来源于stack exchange,提问作者Troy D
相关产品推荐
相关产品推荐

