gpt4 book ai didi

Python 正则表达式 : replace numbers and special characters except years

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:13 25 4
gpt4 key购买 nike

我想用空格替换所有非字母字符,不包括 1950 到 2029 之间的年份。例如:

ab-c 0123 4r。 a2017 2010 -> ab c r a 2010

到目前为止,我的尝试是尝试通过负面预测将日期列入黑名单:

re.sub('(?!\b19[5-9][0-9]\b|\b20[0-2][0-9]\b)([^A-Za-z]+)', ' ', string)

由于这不起作用,非常感谢任何帮助!

最佳答案

您可以使用一个简单的正则表达式并传递一个函数来检查它是否是一年:

import re

def replace_non_year_numbers(m):
number = int(m.group(0))
if 1950 <= number <= 2029:
return str(number)
else:
return ''

print(re.sub('\d+', replace_non_year_numbers, 'ab-c 0123 4r. a2017 2010'))
# 'ab-c r. a2017 2010'

为了保持正则表达式和逻辑简单,您可以在第二步中删除特殊字符:

only_years = re.sub('\d+', replace_non_year_numbers, 'ab-c 0123 4r. a2017 2010')
no_special_char = re.sub('[^A-Za-z0-9 ]', ' ', only_years)
print(re.sub(' +', ' ', no_special_char))
# ab c r a2017 2010

关于Python 正则表达式 : replace numbers and special characters except years,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46090928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com