在python中过滤文本以获取数值
我知道我可以使用正则表达式在python中过滤文本中的数字,但这是最好的方法吗 假设我有一个字符串列表:在python中过滤文本以获取数值,python,regex,Python,Regex,我知道我可以使用正则表达式在python中过滤文本中的数字,但这是最好的方法吗 假设我有一个字符串列表: a="gamma function: 78" b="factorial value: 120" c="random number: 33" 是否有一个好的函数可以执行以下操作 for string in [a,b,c]: return numbers(string) 78 120 33 是的,我认为正则表达式是实现这一点的理想工具: def numbers(s): ret
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
是否有一个好的函数可以执行以下操作
for string in [a,b,c]:
return numbers(string)
78
120
33
是的,我认为正则表达式是实现这一点的理想工具:
def numbers(s):
return int(re.search(r"\d+", s).group(0))
对于包含多个数字的字符串:
def numbers(s):
return [int(match) for match in re.findall(r"\d+", s)]
甚至
def numbers(s):
return (int(match) for match in re.finditer(r"\d+", s))
是的,我认为正则表达式是实现这一点的理想工具:
def numbers(s):
return int(re.search(r"\d+", s).group(0))
对于包含多个数字的字符串:
def numbers(s):
return [int(match) for match in re.findall(r"\d+", s)]
甚至
def numbers(s):
return (int(match) for match in re.finditer(r"\d+", s))
只需过滤掉生成器表达式中的非数字:
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
numbers = []
for string in [a,b,c,]:
numbers.append( int("".join(char for char in string if char.isdigit())))
将此粘贴到控制台上,我得到:
>>> numbers
[78, 120, 33]
只需过滤掉生成器表达式中的非数字:
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
numbers = []
for string in [a,b,c,]:
numbers.append( int("".join(char for char in string if char.isdigit())))
将此粘贴到控制台上,我得到:
>>> numbers
[78, 120, 33]
这里的“最佳”是指1)最简单,2)最快(计算),按顺序排列。每个字符串总是只有一个数字吗?它总是整数吗?理想情况下,两者都是。我会接受一个假设的答案。它总是在字符串的末尾,下面是“?”这里最好的意思是1)最简单,2)最快(计算),按顺序排列。每个字符串总是只有一个数字吗?它总是整数吗?理想情况下,两者都是。我会接受一个假设的答案。它总是在字符串的末尾,下面是“?”。这对于每个字符串中的一个数字很好,即使数字被其他字符隔开。请澄清您的问题,如果在某些情况下,每个字符串中可能有一个以上的数字-哦,我在您的评论中看到了是的。这对每个字符串中的一个数字很好,即使数字被其他字符所替代。如果在某些情况下,每个字符串中可能有多个数字,请澄清您的问题-哦,我现在在您的评论中看到了是的。
map
在这里似乎是有序的:map(int,re.findall(“\d+”,s)
。但是+1,我要做的是:)Amap
在这里似乎是有序的:map(int,re.findall(“\d+”,s)
。但是+1,正是我要做的:)