Python 如何将字符串拆分为3个字符串并在同一位置替换
我有列表列表:每个列表包含一个句子的字符串,在这个列表中有未清理的单词,如单词;所以我需要让它像word一样干净;单词sypbol(;)也应该返回Python 如何将字符串拆分为3个字符串并在同一位置替换,python,list,split,Python,List,Split,我有列表列表:每个列表包含一个句子的字符串,在这个列表中有未清理的单词,如单词;所以我需要让它像word一样干净;单词sypbol(;)也应该返回 start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]] output=[] for item in start: #print(item) for l in item: if ';' in l:
start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
output=[]
for item in start:
#print(item)
for l in item:
if ';' in l:
l=l.split(";")
l.append("")
l[2]=l[1]
l[1]=";"
for i in l:
item.append(i)
output.append(item)
#print(l)
else:
output.append(([item]))
start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
output=[]
for item in start:
#print(item)
for l in item:
if ';' in l:
l=l.split(";")
l.append("")
l[2]=l[1]
l[1]=";"
for i in l:
item.append(i)
output.append(item)
else:
output.append(item)
我想要得到的结果是这样的:
output=[["lolo mama12 ; lo ushfudhsui"],["lolo mama12 ; lo lolo ; jhdsjh" ],["lolo mama12 ; lo"]]
如果我理解正确,你只需要
这个词;单词
看起来像单词;word,要执行此操作,您只需替换';'代码>与';'代码>:
start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
clean = [[x.replace(';', ' ; ') for x in i] for i in start]
输出:
[['lolo mama12 ; lo ushfudhsui'],
['lolo mama12 ; lo lolo ; jhdsjh'],
['lolo mama12 ; lo']]
如果我理解正确,你只需要这个词;单词
看起来像单词;word
,要执行此操作,您只需替换';'代码>与';'代码>:
start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
clean = [[x.replace(';', ' ; ') for x in i] for i in start]
输出:
[['lolo mama12 ; lo ushfudhsui'],
['lolo mama12 ; lo lolo ; jhdsjh'],
['lolo mama12 ; lo']]
您可以尝试将所有“;”
替换为“;”
:
代码:
您可以尝试将所有“;”
替换为“;”
:
代码:
您不必检查自己编写>或拆分字符串(如果希望将其保留为单个字符串)。您只需使用.replace
方法,甚至可以在一行中列出所有内容
`output = [[inner_string.replace(";", " ; ")] for [inner_string] in start]`
工作原理:
>>> start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
>>> output = [[inner_string.replace(";", " ; ")] for [inner_string] in start]
>>> print(output)
[['lolo mama12 ; lo ushfudhsui'], ['lolo mama12 ; lo lolo ; jhdsjh'], ['lolo mama12 ; lo']]
>>>
至于您当前的代码,请查看.join
;)另一种方法是在“;”
上进行拆分,然后在“;”
上加入。这里还有列表理解:
>>> output2 = [[" ; ".join(inner_string.split(";"))] for [inner_string] in start]
>>> print(output2)
[['lolo mama12 ; lo ushfudhsui'], ['lolo mama12 ; lo lolo ; jhdsjh'], ['lolo mama12 ; lo']]
请注意,这两种解决方案都基于这样一个事实,即您的内部列表只包含1个字符串。如果你需要的话,我可以修改它们以供一般使用。你不必检查自己编写>或拆分字符串(如果希望将其保留为单个字符串)。您只需使用.replace
方法,甚至可以在一行中列出所有内容
`output = [[inner_string.replace(";", " ; ")] for [inner_string] in start]`
工作原理:
>>> start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
>>> output = [[inner_string.replace(";", " ; ")] for [inner_string] in start]
>>> print(output)
[['lolo mama12 ; lo ushfudhsui'], ['lolo mama12 ; lo lolo ; jhdsjh'], ['lolo mama12 ; lo']]
>>>
至于您当前的代码,请查看.join
;)另一种方法是在“;”
上进行拆分,然后在“;”
上加入。这里还有列表理解:
>>> output2 = [[" ; ".join(inner_string.split(";"))] for [inner_string] in start]
>>> print(output2)
[['lolo mama12 ; lo ushfudhsui'], ['lolo mama12 ; lo lolo ; jhdsjh'], ['lolo mama12 ; lo']]
请注意,这两种解决方案都基于这样一个事实,即您的内部列表只包含1个字符串。如果你需要的话,我可以修改它们以供一般使用。你可以替换所有出现的“;”以“;”开头或后跟0个或多个空格。这样,如果字符串的一部分已经被“清理”,您就不会添加任何不必要的空间,如果您只是简单地替换它们,就会发生这种情况
import re
start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
pattern = re.compile(r'\s*;\s*')
out = [[pattern.sub(' ; ', sublist[0])] for sublist in start]
print(out)
# [['lolo mama12 ; lo ushfudhsui'], ['lolo mama12 ; lo lolo ; jhdsjh'], ['lolo mama12 ; lo']]
您可以替换所有出现的“;”以“;”开头或后跟0个或多个空格。这样,如果字符串的一部分已经被“清理”,您就不会添加任何不必要的空间,如果您只是简单地替换它们,就会发生这种情况
import re
start=[["lolo mama12;lo ushfudhsui"],["lolo mama12;lo lolo;jhdsjh" ],["lolo mama12;lo"]]
pattern = re.compile(r'\s*;\s*')
out = [[pattern.sub(' ; ', sublist[0])] for sublist in start]
print(out)
# [['lolo mama12 ; lo ushfudhsui'], ['lolo mama12 ; lo lolo ; jhdsjh'], ['lolo mama12 ; lo']]