【发布时间】:2021-10-19 12:31:23
【问题描述】:
我在 python 中工作:
我正在尝试在不使用 excel 的情况下转换 csv 文件中的列,只使用正则表达式。
month_dictionary={"January":1,
"February":2,
"March":3,
#...etc
这是我目前所拥有的。
with open(file, newline="") as csvfile:
reader = csv.reader(csvfile, delimiter=",", quotechar='"')
for row in reader:
for item in row:
item.replace(r"(\d{1,2})\/(\d{1,2})\/(\d{4})/gm", month_dictionary[r"${1}"], r"${2}, ${3}")
我不太了解正则表达式,我在谷歌上搜索时遇到了一些麻烦。
我得到的错误是:
KeyError: '${1}'
那么如何正确格式化替换正则表达式以执行我想要的操作?
05-25-1999
into
May 25, 19999
我希望这是一个简单的问题,与我对格式的无知有关。
【问题讨论】:
-
出于兴趣,您是否有理由不使用 ISO 8601 格式?
-
str.replace()不处理正则表达式,需要使用re.sub()。解决方法是用一个函数作为替换,它可以做字典查找。 -
@PranavHosangadi 冷静一下,OP 只是想给出完整的上下文。我认为这个问题不值得一票否决。
-
但是为什么要使用正则表达式而不是
datetime库呢? -
@JamesGeddes 完整上下文在干扰 MRE 的可重复性时没有帮助。