Python 在字符串中连接单词
我有一个字符串列表,我想通过创建新的“字符串列表”来连接两个单词。然而,根据我的假设,在运行了一些代码之后,结果并不接近 text=['A'、'123'、'BCR'、'EF'、'RTY'、'B'、'123'、'VCR'、'EF'、'B'、'123'、'RRR'、'EF'、'RTY'] 代码 正如你所看到的,“EF”总是在“RTY”之前(到目前为止),但出于安全考虑,我正在扣除指数或位置。任何线索Python 在字符串中连接单词,python,string,python-2.7,Python,String,Python 2.7,我有一个字符串列表,我想通过创建新的“字符串列表”来连接两个单词。然而,根据我的假设,在运行了一些代码之后,结果并不接近 text=['A'、'123'、'BCR'、'EF'、'RTY'、'B'、'123'、'VCR'、'EF'、'B'、'123'、'RRR'、'EF'、'RTY'] 代码 正如你所看到的,“EF”总是在“RTY”之前(到目前为止),但出于安全考虑,我正在扣除指数或位置。任何线索 问题中的答案已更新。字符串在python中是不可变的,您应该将连接结果重新分配给变量: text[a
问题中的答案已更新。字符串在python中是不可变的,您应该将连接结果重新分配给变量:
text[a[l]] = text[a[l]]+text[b[m]]
输出:
['A', '123', 'BCR', 'EFRTY', 'RTY', 'B', '123', 'VCR', 'EF', 'B', '123', 'RRR', 'EFRTY', 'RTY']
字符串在python中是不可变的,您应该将连接结果赋回一个变量:
text[a[l]] = text[a[l]]+text[b[m]]
输出:
['A', '123', 'BCR', 'EFRTY', 'RTY', 'B', '123', 'VCR', 'EF', 'B', '123', 'RRR', 'EFRTY', 'RTY']
要将所有相邻的
'EF'
,'RTY'
非重叠对连接到一个列表中:
L = ['A','123','BCR','EF','RTY','B','123','VCR','EF','B','123','RRR','EF','RTY']
result = []
pairs = iter(zip(L, L[1:]+['']))
for a, b in pairs:
if a == 'EF' and b == 'RTY': # found adjacent
a += b # join
next(pairs, None) # skip the next a ('RTY')
result.append(a)
L[:] = result # modify inplace
# -> ['A','123','BCR','EFRTY','B','123','VCR','EF','B','123','RRR','EFRTY']
要支持两个以上的单词:
seq = ["EF", "RTY", "B"]
pos = i = 0
while i < len(L):
if L[i:i+len(seq)] == seq:
L[pos] = "".join(seq)
i += len(seq)
else:
L[pos] = L[i]
i += 1
pos += 1
del L[pos:]
seq=[“EF”、“RTY”、“B”]
pos=i=0
而我
要将所有相邻的'EF'
,'RTY'
非重叠对连接在一个列表中,请执行以下操作:
L = ['A','123','BCR','EF','RTY','B','123','VCR','EF','B','123','RRR','EF','RTY']
result = []
pairs = iter(zip(L, L[1:]+['']))
for a, b in pairs:
if a == 'EF' and b == 'RTY': # found adjacent
a += b # join
next(pairs, None) # skip the next a ('RTY')
result.append(a)
L[:] = result # modify inplace
# -> ['A','123','BCR','EFRTY','B','123','VCR','EF','B','123','RRR','EFRTY']
要支持两个以上的单词:
seq = ["EF", "RTY", "B"]
pos = i = 0
while i < len(L):
if L[i:i+len(seq)] == seq:
L[pos] = "".join(seq)
i += len(seq)
else:
L[pos] = L[i]
i += 1
pos += 1
del L[pos:]
seq=[“EF”、“RTY”、“B”]
pos=i=0
而我
Python字符串是不可变的。所以你不能就地修改它们。预期的输出是什么?最后的text
内容应该是什么?@HunterMcMillen是对的,你不能在适当的位置变异字符串,这在python中是不可能的。要清楚,text
不是字符串,而是字符串列表。您正在尝试修改字符串吗?还是字符串列表?感谢您提供有关“字符串列表”的“不变性”的重要信息。那么,是否有可能创建一个新的“字符串列表”。原始字符串会发生什么变化?如果将最后一行更改为text[a[l]+=text[b[m]
,您将得到['a','123','BCR','EFRTY','RTY','b','123','VCR','EF','b','123','RRR','EFRTY','RTY']
。这不是一种有效的方法,但你可以做到。Python字符串是不可变的。所以你不能就地修改它们。预期的输出是什么?最后的text
内容应该是什么?@HunterMcMillen是对的,你不能在适当的位置变异字符串,这在python中是不可能的。要清楚,text
不是字符串,而是字符串列表。您正在尝试修改字符串吗?还是字符串列表?感谢您提供有关“字符串列表”的“不变性”的重要信息。那么,是否有可能创建一个新的“字符串列表”。原始字符串会发生什么变化?如果将最后一行更改为text[a[l]+=text[b[m]
,您将得到['a','123','BCR','EFRTY','RTY','b','123','VCR','EF','b','123','RRR','EFRTY','RTY']
。这不是一个有效的方法,但你能做到。谢谢Ashwini。非常接近,你真的指导了我。@LonelySoul很高兴这有帮助。:)谢谢阿什维尼。非常接近,你真的指导了我。@LonelySoul很高兴这有帮助。:)这是一个非常有趣的解决方案@J.F.Sebastian。但是,如果我想再添加一个单词,那么您将如何更改code@LonelySoul:我添加了支持两个以上单词的代码。如果您有多个序列,则可能希望将pos重置为“pos=I=0”。可能对某人有帮助。这是一个非常有趣的解决方案@J.F.Sebastian。但是,如果我想再添加一个单词,那么您将如何更改code@LonelySoul:我添加了支持两个以上单词的代码。如果您有多个序列,则可能希望将pos重置为“pos=I=0”。可能对某人有帮助。