繁体   English   中英

如何从列表中的某些字符串中删除特定字符串?

[英]How do I remove a specific string from some strings in a list?

我一直在尝试为我的代码找出一个更通用的修复方法,并且很难使用它。 这就是我所拥有的:

lst = ['Thursday, June ##', 'some string', 'another string', 'etc', 'Friday, June ##', 'more strings', 'etc']

我正在尝试删除包含逗号的字符串中逗号之后的所有内容(只能是星期几字符串)。

我目前有效的修复方法是:

new_lst = [x[:-9] if ',' in x else x for x in lst]

但这并不适用于每个月,因为它们并不总是一个 4 个字母的字符串('June')。 我试过用逗号分割,然后删除任何以空格开头的字符串,但它不能正常工作,所以我不确定我做错了什么。

我们可以在这里使用列表推导和split()

lst = ['Thursday, June ##', 'some string', 'another string', 'etc', 'Friday, June ##', 'more strings', 'etc']
output = [x.split(',', 1)[0] for x in lst]
print(output)
# ['Thursday', 'some string', 'another string', 'etc', 'Friday', 'more strings', 'etc']

使用regex

>>> import re
>>> lst = [re.sub(r',.*', '', x) for x in lst]
>>> lst
['Thursday,', 'some string', 'another string', 'etc', 'Friday,', 'more strings', 'etc']

但是,这比split答案慢

您可以通过以下方式使用re.search

import re
lst = ['Thursday, June ##', 'some string', 'another string', 'etc', 'Friday, June ##', 'more strings', 'etc']
for i, msg in enumerate(lst):
    match = re.search(",", msg)
    if match != None:
        lst[i] = msg[:match.span()[0]]
print(lst)

输出:

['Thursday', 'some string', 'another string', 'etc', 'Friday', 'more strings', 'etc']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM