0

我有一个包含字母和数字的字符串列表。我想搜索号码并将它们返回给我。做这个的最好方式是什么?我对 Python 很陌生,我研究了正则表达式,现在我正在学习它们,但我不知道什么时候我才能在使用正则表达式之前足够好。

4

2 回答 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 回答