gpt4 book ai didi

Python - 在字符串中查找数字

转载 作者:太空狗 更新时间:2023-10-29 17:10:36 25 4
gpt4 key购买 nike

def get_digits(str1):
c = ""

for i in str1:
if i.isdigit():
c += i
return c

以上是我使用的代码,问题是它只返回字符串的第一位数字。为此,我必须同时保留 for 循环和 return 语句。任何人都知道如何修复?

谢谢。

最佳答案

正如其他人所说,你的缩进有语义问题,但你不必编写这样的函数来做到这一点,一个更 pythonic 的方法是:

def get_digits(text):
return filter(str.isdigit, text)

关于解释器:

>>> filter(str.isdigit, "lol123")
'123'

一些建议

当人们展示“更快”的方法时,总是自己测试:

from timeit import Timer

def get_digits1(text):
c = ""
for i in text:
if i.isdigit():
c += i
return c

def get_digits2(text):
return filter(str.isdigit, text)

def get_digits3(text):
return ''.join(c for c in text if c.isdigit())

if __name__ == '__main__':
count = 5000000
t = Timer("get_digits1('abcdef123456789ghijklmnopq123456789')", "from __main__ import get_digits1")
print t.timeit(number=count)

t = Timer("get_digits2('abcdef123456789ghijklmnopq123456789')", "from __main__ import get_digits2")
print t.timeit(number=count)

t = Timer("get_digits3('abcdef123456789ghijklmnopq123456789')", "from __main__ import get_digits3")
print t.timeit(number=count)



~# python tit.py
19.990989106 # Your original solution
16.7035926379 # My solution
24.8638381019 # Accepted solution

关于Python - 在字符串中查找数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12005558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com