【问题标题】:Print only the numbers in the string in python在python中只打印字符串中的数字
【发布时间】:2021-12-27 14:30:53
【问题描述】:

我只需要打印字符串中的数字,我不知道该怎么做 我的意思是例如 mystring="ab543",如何将 543 设为 int?

我尝试过类似的方法

my_string="ab543"
numlst=["0","1","2","3","4","5","6","7","8","9"]
countfinish=0
whichnum=""
for charr in my_string:
    for num in numlst:
        if num==charr:
            whichnum=whichnum+str(num)
    break
    countfinish=countfinish+int(whichnum)
print(countfinish)

【问题讨论】:

  • 输入字符串中的数字是否保证是连续的,或者它们也可以穿插字母(例如“ab62t6yd63”=> 62663)?
  • 你为什么breaking?
  • 只有整数吗?
  • 不仅仅是整数

标签: python string integer


【解决方案1】:

我不确定这是否是您要寻找的答案,但您可以尝试使用 .isdigit() 来检查字符是否为数字。

my_string="ab543"
numbers = []
for i in my_string:
    if (i.isdigit()):
        numbers.append(i)
final = "".join(numbers)
print(final) # prints 543
print(int(final)) # prints 543

【讨论】:

  • line="rk2 c55 Q3 wWw67 10" print(line.split()) numm="" count=0 for elem in line: for char in elem: if char.isdigit()==True: numm=numm+char count=count+int(numm) print (count) 我出错了
  • 为什么这里有 2 个 for 循环?
【解决方案2】:

你可以使用正则表达式:

import re
pattern = "\d+[.]?\d*"
re.findall(pattern, my_string)

这里使用的模式也应该给你浮点数。 例如如果my_string="ab543ab2392alsow435.32",那么你会得到以下输出:

['543', '2392', '435.32']

之后您可以使用int() 函数将它们转换为整数。

【讨论】:

    【解决方案3】:

    你可以试试:

    >>> my_string="ab543"
    >>> "".join([str(s) for s in my_string if s.isdigit()])
    '543'
    >>> int("".join([str(s) for s in my_string if s.isdigit()]))
    543
    

    您也可以使用filter

    >>> my_string="ab543"
    >>> int(''.join(filter(str.isdigit, my_string)))
    543
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2018-09-24
      • 2011-10-17
      相关资源
      最近更新 更多