我有一个包含字母和数字的字符串列表。我想搜索号码并将它们返回给我。做这个的最好方式是什么?我对 Python 很陌生,我研究了正则表达式,现在我正在学习它们,但我不知道什么时候我才能在使用正则表达式之前足够好。
问问题
167 次
2 回答
5
要返回名为 的列表中所有字符串中的所有数字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
当所有字符都是数字时才匹配;小数点不计算在内)。
于 2013-08-06T15:21:27.687 回答
1
您可以使用isdigit
:
numbers = [n for n in strings if n.isdigit()]
如果你真的想解析它们:
numbers = [int(n) for n in strings if n.isdigit()]
这是假设您只想要全为数字的字符串,而您将希望忽略混合字母和数字的字符串。不幸的是,您的问题并不清楚您真正想要的是哪个。您也没有指定数字是否代表整数,或者它们可能代表浮点值。:-(
于 2013-08-06T15:22:36.150 回答