在Python中搜索数字字符串
我有一个包含字母和数字的字符串列表。我想搜索这些号码并把它们还给我。最好的方法是什么?我对Python非常陌生,我研究过正则表达式,现在正在学习它们,但我不知道在使用正则表达式之前,我什么时候才能熟练掌握它们。要返回名为在Python中搜索数字字符串,python,list,expression,Python,List,Expression,我有一个包含字母和数字的字符串列表。我想搜索这些号码并把它们还给我。最好的方法是什么?我对Python非常陌生,我研究过正则表达式,现在正在学习它们,但我不知道在使用正则表达式之前,我什么时候才能熟练掌握它们。要返回名为inputlist的列表中所有字符串中的所有数字,可以使用列表理解: import re numbers = [int(num) for value in inputlist for num in re.findall('\d+', value)] 这也将数字转换为整数。如果
inputlist
的列表中所有字符串中的所有数字,可以使用列表理解:
import re
numbers = [int(num) for value in inputlist for num in re.findall('\d+', value)]
这也将数字转换为整数。如果您需要浮点值(也就是包含小数点的数字),请为一个小数点添加一个模式,旁边是数字:
numbers = [float(num) for value in inputlist for num in re.findall('\d+(?:\.\d*)', value)]
但是,如果只查找数字字符串(而不只是包含数字),str.isdigit()
可能就足够了:
numbers = [int(value) for value in inputlist if value.isdigit()]
请注意,这与浮点数不匹配(
str.isdigit()
仅当所有字符都是数字时才为True
;小数点不计算)。要返回名为inputlist
的列表中所有字符串中的所有数字,可以使用列表理解:
import re
numbers = [int(num) for value in inputlist for num in re.findall('\d+', value)]
这也将数字转换为整数。如果您需要浮点值(也就是包含小数点的数字),请为一个小数点添加一个模式,旁边是数字:
numbers = [float(num) for value in inputlist for num in re.findall('\d+(?:\.\d*)', value)]
但是,如果只查找数字字符串(而不只是包含数字),str.isdigit()
可能就足够了:
numbers = [int(value) for value in inputlist if value.isdigit()]
请注意,这与浮点数不匹配(str.isdigit()
仅当所有字符都是数字时才为True
;小数点不计数)。您可以使用:
如果确实要分析它们,请执行以下操作:
numbers = [int(n) for n in strings if n.isdigit()]
这是假设您只需要全部为数字的字符串,并且希望忽略字母和数字混合的字符串。不幸的是,你的问题并不清楚你到底想要什么。您也没有指定这些数字是否表示整数,或者它们可能表示浮点值:-(您可以使用:
如果确实要分析它们,请执行以下操作:
numbers = [int(n) for n in strings if n.isdigit()]
这是假设您只需要所有数字的字符串,并且您希望忽略字母和数字混合的字符串。不幸的是,您的问题不清楚您真正想要的是哪一个。您也没有指定数字是否表示整数,或者它们可能表示浮点数:-(这假设整个值是一个数字。@Martijn Pieters:我认为这是否相关有点不清楚。同意;注意该方法称为
.isdigit()
,而不是.isdigits())
。这假设整个值是一个数字。@Martijn Pieters:我认为这是否相关有点不清楚。同意;请注意,该方法名为.isdigit()
,而不是.isdigits()
。