如何在文本中找到x位数字?
有没有更好的(更有效率的)方法来在文本中找到x位数的数字(由x个数字组成的数字)?
我现在的方法是:
更新:
for n in range(0,len(text)):
if isinstance(text[n:n+x], (int)) and isinstance(text[n:n+x+1] is False:
result = text[n:n+x]
return result
更新2:
for n in range(0,len(text)):
try:
int(text[n:n+x])
result = text[n:n+x]
except:
pass
return result
3 个回答
0
当然可以!请看下面的内容:
在编程中,我们经常会遇到一些问题,比如代码运行不正常或者出现错误。这时候,我们需要去查找原因,通常可以通过一些工具或者方法来帮助我们找到问题所在。
有时候,错误信息会告诉我们出错的地方,但有时候却不太明确。这就需要我们仔细分析代码,看看是不是哪里写错了,或者逻辑上有没有问题。
此外,很多编程语言都有调试工具,可以让我们逐行查看代码的执行情况,帮助我们更好地理解程序是如何运行的。
总之,遇到问题时,不要着急,慢慢分析,利用好工具,通常都能找到解决办法。
exampleText = "abcd12345xyz"
import re
match = re.search('\d+',exampleText)
print(match.group())
3
你可以使用正则表达式来实现这个功能。比如说,
>>> import re
>>> s = "abc 123 45678"
>>> re.search("(\d{5})\D",s).group()
'45678'
这个代码可以在字符串s中找到一个5位数的数字。如果你有多个数字要找,可以使用findall这个方法。
>>> s = "abc 123 45678\nbla foo 65432"
>>> re.findall("(\d{5})\D",s)
['45678', '65432']
3
import re
string = "hello 123 world 5678 897 word"
number_length = 3
pattern= r"\D(\d{%d})\D" % number_length # \D to avoid matching 567
print re.findall(pattern, string)
["123","897"]
输出