处理同时包含文本和数字的文本数据时,可以从字符串中提取数值所必需的。在 Python 中执行此任务的两种常见方法是正则表达式和 isdigit() 方法。
正则表达式 (regex) 提供了一种强大的方法来匹配字符串中的模式。要提取数字,您可以使用 d 模式,它匹配一位或多位数字。考虑以下示例:
import re line = "hello 12 hi 89" numbers = re.findall(r'\d+', line) print(numbers) # Output: [12, 89]
此正则表达式匹配数字“12”和“89”序列并将它们作为列表返回。要仅匹配由单词边界(例如空格、句点或逗号)分隔的数字,您可以使用 b 模式:
numbers = re.findall(r'\b\d+\b', line) print(numbers) # Output: [12, 89]
isdigit () 方法提供了另一种从字符串中提取数字的方法。对于数字字符,此方法返回 True,否则返回 False。要使用它,您可以迭代字符串并检查每个字符:
line = "hello 12 hi 89" numbers = [] for char in line: if char.isdigit(): numbers.append(int(char)) print(numbers) # Output: [12, 89]
在此示例中,该方法迭代字符串中的每个字符,使用 isdigit() 检查它是否是数字,然后如果是,则将其附加到数字列表中。
通常,使用正则表达式从字符串而不是使用 isdigit() 方法。正则表达式可以快速匹配复杂的模式,而 isdigit() 需要迭代整个字符串。
如果您还需要提取负整数,正则表达式方法提供了一个更简单的解决方案。只需使用 r'-d ' 来匹配负数。然而,使用 isdigit() 需要更复杂的逻辑来处理负号。
以上是Python 字符串数字提取:正则表达式与 isdigit() - 哪种方法最好?的详细内容。更多信息请关注PHP中文网其他相关文章!