【问题标题】:Turn text into a string of letters in python?在python中将文本变成一串字母?
【发布时间】:2016-03-22 22:20:00
【问题描述】:

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

基本上,我想变成“我想在晚餐时吃 2 片披萨,然后在沙漠中吃 1 勺冰淇淋” 进入[2,1](只是一个例子)

    dummy = dummy.split(" ")
                    j = 0
                    for i in dummy:
                        dummy[j]=i.rstrip("\D")
                        j+=1
                        print(dummy[j-1])

是我尝试过的,但它没有删除任何东西。我尝试了 rstrip("\D") 因为我认为这应该删除文本但似乎不适用于列表。

有什么想法我哪里出错了或者有什么方法可以解决这个问题?

【问题讨论】:

  • 您将普通文本与正则表达式混淆了。
  • \D 用于正则表达式。 rstrip 和 family 不接受正则表达式作为参数,只是字符串或特殊值 None(默认值)。

标签: python string list text


【解决方案1】:

这听起来像是功课,所以试试这个:

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

【讨论】:

    【解决方案2】:

    您可以为此使用re.split(与您发布的代码行略有不同,TigerhawkT3 观察到您似乎将正则表达式与字符串混合在一起)但更适合您的目的是re.findall。再加上调用 int 将数字字符串转换为实际整数就可以了。

    【讨论】:

      【解决方案3】:

      您可以使用正则表达式来做到这一点:

      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() 方法不使用正则表达式,所以这就是你的方法不起作用的原因。

      【讨论】:

        【解决方案4】:

        re.findall() 方法将创建一个匹配字符串列表,一个简单的列表推导将它们转换为ints。

        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]
        

        【讨论】:

          【解决方案5】:

          这样做的一种方法是

          dummy = [int(c) for c in dummy.split(" ") if c.isdigit() ]
          

          这只会拾取两边用空格分隔的数字(例如“2cm”不会被拾取)。

          【讨论】:

          • 所以我在开头添加了 exclude = set(string.punctuation) dummy = ''.join(ch for ch in dummy if ch not in exclude) 这样即使有标点符号它仍然会拉数字就在号码后面谢谢你
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-01
          • 1970-01-01
          • 2019-11-17
          • 2012-01-20
          相关资源
          最近更新 更多