将文本转换为python中的字母串?

时间:2016-03-22 22:20:00

标签: python string list text

所以我试图制作一个代码,如果代码可以接受一个字符串,忽略其中的所有纯文本,并返回一个数字列表,但我遇到了麻烦。

基本上,我想转过来#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")因为我认为应该删除文本但似乎不适用于列表。

我出错的任何想法或解决方法?

5 个答案:

答案 0 :(得分:2)

这听起来像是课堂作业,所以试试这个:

  1. 使用str.split将句子分成单词。
  2. 使用str.isdigit确定哪些字都是数字。
  3. 使用int()将仅数字的单词转换为整数。
  4. 返回列表。

答案 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]