【问题标题】:How can I print only integers/numbers from string如何只打印字符串中的整数/数字
【发布时间】:2013-10-29 07:45:47
【问题描述】:

您好,我是编程和 python 方面的新手,我有一个问题。

如何打印或只返回字符串中的数字

例如:

"Hu765adjH665Sdjda"

输出:

"765665"

【问题讨论】:

    标签: string python-2.7 python-3.x int return


    【解决方案1】:

    您可以使用 re.sub 删除任何不是数字的字符。

    import re
    
    string = "Hu765adjH665Sdjda"
    string = re.sub('[^0-9]', '', string)
    print string
    #'765665'
    

    re.sub 从左到右扫描字符串。每次它找到一个不是数字的字符时,它都会将其替换为空字符串(这与出于所有实际目的删除它相同)。

    【讨论】:

    • 您好,感谢您的及时回复!你能解释一下这里发生了什么吗?谢谢! :D
    • 这也可以用于字母吗?
    • 如果我只想要字母而不是数字...所以我可以将其更改为 [^a-z] ... 这样可以吗?
    • 谢谢!非常感谢所有的帮助!
    • 不客气。如果对您有用,请记住接受答案。
    【解决方案2】:
    >>> s = "Hu765adjH665Sdjda"
    >>> ''.join(c for c in s if c in '0123456789')
    '765665'
    

    【讨论】:

      【解决方案3】:

      试试过滤器

      >>> str='1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol'
      >>> print str
      1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol
      >>> filter(lambda x:x>='0' and x<='9', str)
      '123456789'
      

      【讨论】:

      • 嘿感谢您的及时答复!还有一件事,你能解释一下这里发生了什么吗?
      • 哦,我收到了这个错误:
      • 不要使用像 str 这样的名称,因为它们会覆盖像 str 这样的函数
      • 很简单,filter 接受一个谓词和一组输入,只返回谓词评估为真的那些
      • 这个“lambda”函数有什么作用?
      【解决方案4】:
      sentence = "Hu765adjH665Sdjda"
      
      for number in sentence:
          if number in "0123456789":
              print(number)
      

      【讨论】:

        猜你喜欢
        • 2021-12-27
        • 1970-01-01
        • 1970-01-01
        • 2018-11-25
        • 1970-01-01
        • 2021-09-29
        • 2016-01-20
        • 2017-09-05
        • 1970-01-01
        相关资源
        最近更新 更多