我正在解析一些标准格式为10 pizzas
的数据。有时,数据输入正确,我们可能最终得到5pizzas
而不是5 pizzas
。在这个场景中,我想解析出披萨的数量。
最简单的方法是一个字符一个字符地检查,建立一个字符串,直到我们得到一个非数字,然后将该字符串转换为整数。
num_pizzas = ""
for character in data_input:
if character.isdigit():
num_pizzas += character
else:
break
num_pizzas = int(num_pizzas)
这是相当笨重的,虽然。有没有更简单的方法来分割字符串,从数字转换为字母字符?
5条答案
按热度按时间jmo0nnb31#
你要求一种方法来分割数字串,但在你的例子中,你实际上想要的只是第一个数字,这很容易用
itertools.takewhile()
完成:这是很有意义的-我们所做的是从字符串中提取字符,而它们是数字。这有一个好处,即当我们到达第一个非数字字符时,立即停止处理。
如果你还需要后面的数据,那么你需要的是
itertools.groupby()
和一个简单的list comprehension:如果你想得到一个巨大的数字:
ig9co6j12#
要按位拆分字符串,可以将
re.split
与正则表达式\d+
一起使用:使用
re.search
查找第一个数字:如果你知道数字必须在字符串的开头,那么你可以使用
re.match
而不是re.search
。如果你想找到所有的数字并丢弃剩下的数字,你可以使用re.findall
。q43xntqr3#
正则表达式怎么样?
db2dz4w84#
答案添加作为解决如何将字符串按数字拆分为列表的可能方法?这是
dupe-linked
。你可以自己做分割:
''.join()
-艾德)添加到结果列表中(仅当不为空时),并且不要忘记清除临时列表输出:
参考文献:
46qrfjad5#
Cnicutar回答的更清晰版本