gpt4 book ai didi

python - 正则表达式在 Python 中不匹配\t\n\r\f\v

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

我有一个字符串列表:

content = ['***************************************\n\t', 'ADVENTURE', '*', 'Solving', 'it', 'in', 'easy', 'steps', '*\n\t', '*\t\t\t\t', '*\n\t', '*\t\t\t\t', '*\n\t', '***************************************\n\t\t', 'FROM:', 'THE', 'ROM', 'DR.', 'CALL', 'HER']

我试图删除以非字母数字字符结尾的任何内容,例如\t\n\v 等等。

我有以下代码:

import re

for each in content:
m = re.match('.*[\t\n\r\f\v]+',each)
if m:
content.remove(each)

但输出仍然给我带\n 或\t 的字符串。有什么想法吗?

最佳答案

此行为的原因是 content 列表正在动态更新。这会产生以下问题。假设它选择第 8 个索引项,即 '*\n\t',它匹配正则表达式并被删除,这使得 '*\t\t\t\t' 变为向后移动一个位置,选择的下一个项目是 '*\n\t'。因此 '*\t\t\t\t' 保留在 中内容列表。为避免这种情况,您需要使用 copy 模块作为:

>>> import copy
>>> content = ['***************************************\n\t', 'ADVENTURE', '*', 'Solving', 'it', 'in', 'easy', 'steps', '*\n\t', '*\t\t\t\t', '*\n\t', '*\t\t\t\t', '*\n\t', '***************************************\n\t\t', 'FROM:', 'THE', 'ROM', 'DR.', 'CALL', 'HER']
>>> for i in copy.copy(content):
... m=re.match(r'.*[\t\n\r\f\v]+',i)
... if m:
... content.remove(i)
...
>>> content
['ADVENTURE', '*', 'Solving', 'it', 'in', 'easy', 'steps', 'FROM:', 'THE', 'ROM', 'DR.', 'CALL', 'HER']

你也可以在不使用 copy 模块的情况下这样做:

>>> for i in content[:]:
... m=re.match(r'.*[\t\n\r\f\v]+',i)
... if m:
... content.remove(i)
...
>>> content
['ADVENTURE', '*', 'Solving', 'it', 'in', 'easy', 'steps', 'FROM:', 'THE', 'ROM', 'DR.', 'CALL', 'HER']

关于python - 正则表达式在 Python 中不匹配\t\n\r\f\v,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153590/

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