Python 如何将字符串拆分为3个字符串并在同一位置替换

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:

我有列表列表:每个列表包含一个句子的字符串,在这个列表中有未清理的单词,如单词;所以我需要让它像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:
            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']]