我的问题是:
我有一个列表,经过多次清理后,其中包含看起来像“455XYZ455”的元素。我试图删除 X 之后的所有内容,但它位于列表内。允许我执行此操作的代码如下:
check = [re.sub(r'\W', '', i) for i in content]
# print(check)
check2 = [re.sub('[aclassnewpagehref]', '', i) for i in check]
# print(check2)
check3 = [re.sub('[/<=""]', '', i) for i in check2]
# print(check3)
check4 = [item for item in check3 if item != '']
print(check4)
正如预期的那样,它给了我很多“455XYZ455”,就像上面一样。我只想要“455”,但这是一个列表。 作为一个 Python 初学者,我完全陷入困境。 感谢您的阅读,或许还可以帮助我!
最佳答案
您可以捕获第 1 组中要保留的前几个数字,并删除从 X 开始的其余数字。
\A(\d+)X.*\Z
说明
\A
字符串开头(\d+)X
捕获组 1 中的 1+ 位数字,然后匹配 X.*\Z
匹配任意字符 0 次以上并断言字符串结尾
例如
import re
final = ["455XYZ455", "455XYZ455"]
for item in final:
print(re.sub(r"^(\d+)X.*\Z", r"\1", item))
输出
455
455
关于python - 如何删除列表中特定字符之后的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64969131/