[英]split values in list based on multiple separators python
我在列表中有一个字符串。 我想基于我的分隔符拆分值。 我不想使用任何正则表达式。 regex只需一次操作即可执行。 但我想使用循环和split()函数来实现它。 如何使其成为可能。 这是我的代码:
aa = ['prinec-how,are_you&&smile#isfine1']
separator = ["-",",","_","&","#"]
l1 = []
for sep in separator:
for i in aa:
#print("i:",i)
split_list = i.split(sep)
aa = split_list
print("aa:",aa)
#print("split_list:",split_list)
l1 =l1 + split_list
print(l1)
要求的输出:
['prinec','how','are','you','smile','isfine1']
使用str.replace
和str.split()
例如:
aa = ['prinec-how,are_you&&smile#isfine1']
separator = ["-",",","_","&","#"]
for i in aa:
for sep in separator:
i = i.replace(sep, " ")
print(i.split())
输出:
['prinec', 'how', 'are', 'you', 'smile', 'isfine1']
使用正则表达式(这将是明智的,在这里做)的这一翻译,你可以如使用itertools.groupby
通过它们是否是分隔符,或者不组字符,然后让那些不属于组。
aa = ['prinec-how,are_you&&smile#isfine1']
separator = ["-",",","_","&","#"]
from itertools import groupby
res = [''.join(g) for k, g in groupby(aa[0], key=separator.__contains__) if not k]
# res: ['prinec', 'how', 'are', 'you', 'smile', 'isfine1']
据我了解,您希望通过不同的分隔符迭代地拆分列表中的字符串,并将其部分重新添加到列表中。 这样, aa
成为最初包含单个字符串的列表也是有意义的。 您可以通过列表理解来轻松实现这一点,用一个新列表替换aa
,该列表包含上一个aa
拆分词和下一个分隔符:
aa = ['prinec-how,are_you&&smile#isfine1']
separator = ["-",",","_","&","#"]
for s in separator:
aa = [x for a in aa for x in a.split(s) if x]
# aa: ['prinec', 'how', 'are', 'you', 'smile', 'isfine1']
使用regex
import re
a=re.compile(r'[^-,_&#]+')
ST = 'prinec-how,are_you&&smile#isfine1'
b=a.findall(ST)
print(b)
"""
output
['prinec', 'how', 'are', 'you', 'smile', 'isfine1']
"""
使用for循环
aa = ['prinec-how,are_you&&smile#isfine1','prinec-how,are_you&&smile#isfi-ne1']
separator = ["-",",","_","&","#"]
for i in range(len(aa)):
j =aa[i]
for sep in separator:
j = j.replace(sep, ' ')
aa[i]=j.split()
print(aa)
输出值
[['prinec', 'how', 'are', 'you', 'smile', 'isfine1'], ['prinec', 'how', 'are', 'you', 'smile', 'isfi', 'ne1']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.