如何使用 re 匹配模式并将模式保持在 python
how to use re to match a pattern and keep pattern in python
我在这样的列表中有一堆字符串:
['2000-01-01', '2000-22-01', '02000-2-2'...]
我想将所有元素转换成这个 ['2000-01-1', '2000-22-1', '2000-02-2']
也就是说 [无零填充]-[零填充]-[无零填充]
最好的方法是什么?
您可以将 int
与 zfill
一起使用:
import re
s = ['2000-01-01', '2000-22-01', '02000-2-2']
new_s = [f'{(k:=i.split("-"))[0]}-{k[1].zfill(2)}-{int(k[-1])}' for i in s]
输出:
['2000-01-1', '2000-22-1', '02000-02-2']
可能的无正则表达式解决方案:
inp = ['2000-01-01', '2000-22-01', '02000-2-2']
outp = []
for date in inp:
nums = date.split("-")
nums[0] = nums[0].lstrip("0")
nums[2] = nums[2].lstrip("0")
outp.append("-".join(nums))
捕获正则表达式组,然后修改它们。
import re
input_list = ['2000-01-01', '2000-22-01', '02000-2-2']
for some_date in input_list:
print('\n', some_date)
the_regex = r'(\d+)-(\d+)-(\d+)'
year = re.search(the_regex, some_date).group(1).lstrip('0') # year
day = re.search(the_regex, some_date).group(2).zfill(2) # day
month = re.search(the_regex, some_date).group(3).lstrip('0') # month
the_output = f'{year}-{day}-{month}'
print(the_output)
我在这样的列表中有一堆字符串: ['2000-01-01', '2000-22-01', '02000-2-2'...]
我想将所有元素转换成这个 ['2000-01-1', '2000-22-1', '2000-02-2'] 也就是说 [无零填充]-[零填充]-[无零填充]
最好的方法是什么?
您可以将 int
与 zfill
一起使用:
import re
s = ['2000-01-01', '2000-22-01', '02000-2-2']
new_s = [f'{(k:=i.split("-"))[0]}-{k[1].zfill(2)}-{int(k[-1])}' for i in s]
输出:
['2000-01-1', '2000-22-1', '02000-02-2']
可能的无正则表达式解决方案:
inp = ['2000-01-01', '2000-22-01', '02000-2-2']
outp = []
for date in inp:
nums = date.split("-")
nums[0] = nums[0].lstrip("0")
nums[2] = nums[2].lstrip("0")
outp.append("-".join(nums))
捕获正则表达式组,然后修改它们。
import re
input_list = ['2000-01-01', '2000-22-01', '02000-2-2']
for some_date in input_list:
print('\n', some_date)
the_regex = r'(\d+)-(\d+)-(\d+)'
year = re.search(the_regex, some_date).group(1).lstrip('0') # year
day = re.search(the_regex, some_date).group(2).zfill(2) # day
month = re.search(the_regex, some_date).group(3).lstrip('0') # month
the_output = f'{year}-{day}-{month}'
print(the_output)