我在列表中有一个字符串。我想基于我的分隔符拆分值。我不想使用任何正则表达式。 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']
答案 0 :(得分:4)
使用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']
答案 1 :(得分:2)
使用正则表达式(这里将 做为明智的选择)的想法,例如使用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']
答案 2 :(得分:1)
使用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']
"""
用于循环
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']]