Python 如何检查字符串是否有9位或更多数字?
我试图检测一个字符串是否有9个或更多的数字。最好的方法是什么 我希望能够在如下字符串中检测电话号码:Python 如何检查字符串是否有9位或更多数字?,python,regex,Python,Regex,我试图检测一个字符串是否有9个或更多的数字。最好的方法是什么 我希望能够在如下字符串中检测电话号码: Call me@(123)123-1234 无论数字在字符串中的位置如何,提取这些数字的最佳方法是什么?因为听起来您只是想检查字符串中是否有9位或更多的数字,所以可以使用该模式 #Import the regular expressions library import re #set our string variable equal to yours above string = 'Call
Call me@(123)123-1234
无论数字在字符串中的位置如何,提取这些数字的最佳方法是什么?因为听起来您只是想检查字符串中是否有9位或更多的数字,所以可以使用该模式
#Import the regular expressions library
import re
#set our string variable equal to yours above
string = 'Call me @ (123)123-1234'
#create a list using regular expressions, of all digits in the string
a = re.findall("[0-9]",string)
#examine the list to see if its length is 9 digits or more, and print if so
if len(a) >= 9:
print(a)
^(\D*\d){9}
它从字符串的开头开始,重复由零个或多个非数字字符组成的组,后跟一个数字字符。重复该组9次,您就知道字符串中至少有9位数字
pattern = re.compile(r'^(?:\D*\d){9}')
print(pattern.match('Call me @ (123)123-1234'))
print(pattern.match('Call me @ (123)123-12'))
因为听起来您只是想检查字符串中是否有9位或更多的数字,所以可以使用该模式
^(\D*\d){9}
它从字符串的开头开始,重复由零个或多个非数字字符组成的组,后跟一个数字字符。重复该组9次,您就知道字符串中至少有9位数字
pattern = re.compile(r'^(?:\D*\d){9}')
print(pattern.match('Call me @ (123)123-1234'))
print(pattern.match('Call me @ (123)123-12'))
或者不使用正则表达式(对于大字符串,速度较慢):
或部分正则表达式:
print(len(re.findall("[0-9]",my_string))>=9)
只需使用python检查是否有九(9)个或更多数字。或没有正则表达式(对于大字符串,速度较慢):
或部分正则表达式:
print(len(re.findall("[0-9]",my_string))>=9)
只需使用python检查是否有九(9)位或更多位。
re.findall(“[0-9]”,my_string)
或者sum(letter.isdigit()表示my_string中的字母)
是否要检查字符串是否有9位或更多位,或者要提取字符串中的所有数字?问题标题和正文有点冲突(还有,你试过什么吗?@CertainPerformance我想检查是否有9位或更多的数字,而不是9位,因为有些人在区号前键入了“1”。所以你想检查,而不是提取,对吗?顺便说一句:我想你实际上是指10位或更多的数字,因为一个电话号码有3+3+4=6。但是我下面的代码有9个,很容易更改。re.findall(“[0-9]”,my_string)
或者可能是sum(letter.isdigit()表示my_string中的字母)
要检查字符串是否有9个或更多数字,还是要提取字符串中的所有数字?问题标题和正文有点冲突(还有,你试过什么吗?@CertainPerformance我想检查是否有9位或更多的数字,而不是9位,因为有些人在区号前键入了“1”。所以你想检查,而不是提取,对吗?顺便说一句:我想你实际上是指10位或更多的数字,因为一个电话号码有3+3+4=6。但我下面的代码有9个,很容易更改。要回答“为什么使用正则表达式?”的问题:因为可能会给你一个有数百万位数的大字符串。除非你的编译器是个天才,否则你的解决方案会把它们全部计算出来并耗尽整个字符串。带有{9}
的正则表达式将在达到九位数后停止。没问题,干杯。我确实同意正则表达式通常被过度使用,因此寻找非正则表达式解决方案是值得称赞的回答“为什么使用正则表达式?”的问题:因为可能会给您一个包含数百万位数的大字符串。除非你的编译器是个天才,否则你的解决方案会把它们全部计算出来并耗尽整个字符串。带有{9}
的正则表达式将在达到九位数后停止。没问题,干杯。我确实同意正则表达式通常被过度使用,因此寻找非正则表达式解决方案是值得称赞的