HML*_*ude 2 python regex string replace python-3.x
我希望从更长的字符串列表中删除日期,每个字符串可能包含也可能不包含日期.一个这样的字符串的示例可能是:
"Jane Doe 76554334 12/15/2017 - 8:35 pm 700945 - SDFTRD $550.95"
Run Code Online (Sandbox Code Playgroud)
我已经构建了一个返回错误的方法:
AttributeError: 'NoneType' object has no attribute 'match_object'
Run Code Online (Sandbox Code Playgroud)
我的目标是寻找正则表达式匹配(\d+/\d+/\d+)
,然后将该匹配转换为字符串,以便它可以使用.replace()
.我似乎无法解决这个问题match_object
.
这是我的方法:
def replace_match(string):
match=re.search(r'(\d+/\d+/\d+)',string)
if match:
match=re.match(r'(\d+/\d+/\d+)',string).match_object.group(0)
print("match = " + match)
string = string.replace(match, "")
else:
print("no match found")
return string
Run Code Online (Sandbox Code Playgroud)
我使用的是Python 3.6.3
你可以使用re.sub
:
import re
s = "Jane Doe 76554334 12/15/2017 - 8:35 pm 700945 - SDFTRD $550.95"
new_s = re.sub('\d+\/\d+\/\d+', '', s)
Run Code Online (Sandbox Code Playgroud)
输出:
'Jane Doe 76554334 - 8:35 pm 700945 - SDFTRD $550.95'
Run Code Online (Sandbox Code Playgroud)
编辑,删除时间戳:
import re
s = "Jane Doe 76554334 12/15/2017 - 8:35 pm 700945 - SDFTRD $550.95"
new_s = re.sub('\d+\/\d+\/\d+|\d+:\d+(?=\spm)|\d+:\d+(?=\sam)', '', s)
Run Code Online (Sandbox Code Playgroud)
输出:
'Jane Doe 76554334 - pm 700945 - SDFTRD $550.95'
Run Code Online (Sandbox Code Playgroud)
时间戳删除正则表达式的说明:
\d+:\d+
:匹配小时然后分钟
(?=\sam)
:是一个积极的前瞻,这意味着\d+:\d+
除非匹配的字符后跟一个空格,然后am
指定它确实是一个时间戳,否则不会注册匹配.
\d+:\d+(?=\spm)
与上面相同,只是它检查时间匹配是否在pm之前,同时考虑两个时间约定.
归档时间: |
|
查看次数: |
642 次 |
最近记录: |