所以我试图制作一个代码,如果代码可以接受一个字符串,忽略其中的所有纯文本,并返回一个数字列表,但我遇到了麻烦。
基本上,我想转过来#34;我想吃晚餐吃2片比萨饼,然后在沙漠中吃一勺冰淇淋" 进入[2,1](仅举例) dummy = dummy.split(" ")
j = 0
for i in dummy:
dummy[j]=i.rstrip("\D")
j+=1
print(dummy[j-1])
是我尝试过但它没有删除任何东西。我尝试了rstrip(" \ D")因为我认为应该删除文本但似乎不适用于列表。
我出错的任何想法或解决方法?
答案 0 :(得分:2)
这听起来像是课堂作业,所以试试这个:
答案 1 :(得分:0)
您可以使用re.findall
(稍微沿着您发布的代码行,TigerhawkT3观察到您似乎正在将正则表达式与字符串混合在一起),但更适合您的目的是int
。加上调用{{1}}将数字字符串转换为实际整数即可完成工作。
答案 2 :(得分:0)
您可以使用正则表达式执行此操作:
import re
string = "I want to eat 12 slices of pizza for dinner, and then 1 scoop of ice cream for desert"
numbers = list(map(int, re.findall(r"\d+", string)))
print(numbers)
#[12, 1]
然而,str.rstrip()
方法不使用正则表达式,这就是为什么你的方法不起作用的原因。
答案 3 :(得分:0)
这样做的一种方法就是
dummy = [int(c) for c in dummy.split(" ") if c.isdigit() ]
这样只会拾取两边用空格分隔的数字(e..g“2cm”不会被拾取)。
答案 4 :(得分:0)
re.findall()
方法将创建匹配字符串列表,简单列表推导将它们转换为int
s。
import re
dummy = "I want to eat 2 slices of pizza for dinner, and then 1 scoop of ice cream for desert"
result = [int(d) for d in re.findall(r'\d+', dummy)]
print(result)
给出:
[2, 1]