我有一堆字符串通过 list(string) 插入列表:
stringy = "I've 24got a 697love-a-ly2 bunch of 000coconuts!"
listy = list(stringy)
listy 看起来像:
['I', "'", 'v', 'e', ' ', '2', '4', 'g', 'o', 't', ' ', 'a', ' ', '6', '9'...
我正在寻找一种更简洁的方法来遍历列表,并且在不丢弃任何单个字符条目的情况下,将所有整数连接在一起以生成:
['I', "'", 'v', 'e', ' ', '24', 'g', 'o', 't', ' ', 'a', ' ', '697','l','o'...
整数在字符串中的位置不可预测,数字中的位数也不可预测(我可能会遇到 1 或 1000000000。)
首先要找到整数值,请考虑以下内容:
for i in listy:
if i.isdigit():
x = listy.index(i)
z = listy[x+1]
if z.isdigit():
...但这只会是一个低效的血腥困惑。
实际上,将数字放在一起会非常容易,但我很难想出一种巧妙的方法来检查每个数字。有什么建议吗?
请您参考如下方法:
您可以使用 re 非常简单地完成此操作,
>>> import re
>>> a = "I've 24got a 697love-a-ly2 bunch of 000coconuts!"
>>> re.findall(r'\d+|.', a)
['I', "'", 'v', 'e', ' ', '24', 'g', 'o', 't', ' ', 'a', ' ', '697', 'l', 'o', 'v', 'e', '-', 'a', '-', 'l', 'y', '2', ' ', 'b', 'u', 'n', 'c', 'h', ' ', 'o', 'f', ' ', '000', 'c', 'o', 'c', 'o', 'n', 'u', 't', 's', '!']
如果你多次执行这个操作,你应该考虑像这样编译它,
>>> splitter = re.compile(r'\d+|.')
