如何删除列表中某个字符之后的所有字符

2024-09-26 17:46:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是:

我有一个列表,经过多次清理后,其中的元素看起来像“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的初学者,我完全被卡住了。 谢谢你的阅读,也许还有对我的帮助


Tags: 代码inre元素内容列表forcheck
2条回答

您可以捕获组1中要保留的第一个数字,并从X开始删除其余数字

\A(\d+)X.*\Z

解释

  • \A字符串的开头
  • (\d+)X组1中捕获1+个数字,然后匹配X
  • .*\Z匹配任何字符0+次,并断言字符串的结尾

regex demo

比如说

import re
final = ["455XYZ455", "455XYZ455"]
for item in final:
    print(re.sub(r"^(\d+)X.*\Z", r"\1", item))

输出

455
455

只需使用不带正则表达式的split即可完成此操作。假设字符串“455XYZ455”位于变量a中

s = a.split('x')[0]

这里a将被“x”分割,它将返回“x”之前和之后的零件列表,但由于您只需要“x”之前的零件,我已将列表的第一个元素指定给s

相关问题 更多 >

    热门问题