所以我有一个输入
6,10,47,3,6,9,54,7,9,0;3
我将其放入如下所示的列表中
['6', ',', '1', '0', ',', '4', '7', ',', '3', ',', '6', ',', '9', ',', '5', '4', ',', '7', ',', '9', ',', '0', ';', '3']
现在,如您所见,两位数数字现在是分开的。我明白,如果我使用 .split(',') 我可以从一开始就完美地分割所有内容,但我想知道在这种状态下是否可以将本来应该在一起的数字连接在一起(那些不被分隔的数字) “,”字符)并将它们保留在列表中的同一位置。即列表中的 1,0 被替换为 10:
['6', ',', '10', ',',...]
我试过了
def join_nums(v):
for id2, char in enumerate(v):
if id2 == len(v) - 1:
return v
elif isinstance(v[id2 + 1], int):
v[id2:id2 + 1] = ["".join(v[id2:id2 + 1])]
它运行但不执行任何操作(甚至不确定是否关闭,因为我还没有完全了解枚举列表!) 谁能把我推向正确的方向。谢谢。
编辑:“;”不是拼写错误。我选择从一开始就不拆分的原因是因为我稍后需要“,”,否则我将不得不重写一些函数。我应该从一开始就指定这一点,抱歉。
最佳答案
假设您仍然可以操作原始字符串(或者您可以将得到的列表连接回字符串),则在这种情况下可以使用 re.findall()
。这将按顺序输出同一列表中的数字和分隔符:
>>> import re
>>> re.findall(r"\d+|[,;]", s)
['6', ',', '10', ',', '47', ',', '3', ',', '6', ',', '9', ',', '54', ',', '7', ',', '9', ',', '0', ';', '3']
此处 \d+|[,;]
将匹配一个或多个数字 (\d+
) 或单个逗号或单个分号。
关于python - 连接列表中不由特定字符分隔的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35330088/