Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中搜索数字字符串_Python_List_Expression - Fatal编程技术网

在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)] 这也将数字转换为整数。如果

我有一个包含字母和数字的字符串列表。我想搜索这些号码并把它们还给我。最好的方法是什么?我对Python非常陌生,我研究过正则表达式,现在正在学习它们,但我不知道在使用正则表达式之前,我什么时候才能熟练掌握它们。

要返回名为
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()