我有一堆字符串通过list(string)
插入到列表中:
stringy = "I've 24got a 697love-a-ly2 bunch of 000coconuts!"
listy = list(stringy)
其中listy
看起来像:
我正在寻找一种更简洁的方法来遍历列表,并且在不抛出任何单个字符项的情况下,将所有整数合并在一起以生成:
['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():
…但那只会是一个低效的血腥混乱。在
实际上,把这些数字放在一起会很容易,但我很难想出一个简单的方法来检查每个数字。有什么建议吗?在
我会使用itertools.groupby(免责声明:我把它用于所有事情…)
groupby
使用键函数将序列拆分为连续的组。在本例中,我的keyfunction是c.isdigit() or c
,对于数字它将返回True,对于非数字则返回字符。不过,正如@gnibbler指出的,我们需要小心,不要意外地合并相邻字符。。在不过,第二步,我们不需要
^{pr2}$count
技巧:另一种方法是从反向列表(或堆栈)中弹出()字符:
您可以很简单地使用^{}
如果要多次执行此操作,则应考虑将其编译为
^{pr2}$相关问题 更多 >
编程相关推荐