我有一个包含日期字符串的字符串'363898,Catullus,84-11-1 BC' 如何使用Python re?
将0084替换为0084答案 0 :(得分:3)
尝试:
import re
re.sub(r',(\d\d)-', r',00\1-', '363898, Catullus,84-11-1 BC')
使用r',(\d\d)-'
,我们捕获逗号和短划线之间的任何数字对(不少于或多于)。我们用逗号,两个零替换整个匹配,无论是第一对括号(这里是两个数字)和破折号之间的任何内容。
这意味着:
在Python中尝试使用正则表达式时,只需使用online regular expression tester完全免责声明:我对此进行了编码,因此我有偏见。
但也许正则表达式不适合这项工作。有时很好地使用普通函数也是如此:
In [10]: entry = '363898,Catullus,84-11-1 BC'.split(',')
In [11]: numbers = entry[-1].split('-')
In [12]: numbers = '-'.join([numbers[0].zfill(4)] + numbers[1:])
In [13]: entry = entry = ','.join(entry[:-1] + [numbers])
In [14]: entry
Out[14]: '363898,Catullus,0084-11-1 BC'
答案 1 :(得分:1)
re.sub(r"(?=\b\d{2}-\d+-\d)", "00", '363898,Catullus,84-11-1 BC')
只会修改年份,如果它们只包含两位数字。你需要另一个
re.sub(r"(?=\b\d-\d+-\d)", "000", '361234,Caesar,8-12-4 BC')
也处理一位数的年份。我会留下三位数的年份作为练习:)