获取字符串中数值列表的最简洁方法是什么?
例如:
string = 'version_4.11.2-2-1.4'
array = [4, 11, 2, 2, 1, 4]
Run Code Online (Sandbox Code Playgroud)
您可能理解,我需要比较版本.
"最干净",我的意思是尽可能简单/简短/可读.
另外,如果可能的话,我更喜欢内置函数而不是regexp(import re).
这是我到目前为止所得到的,但我觉得它很笨拙:
array = [int(n) for n in ''.join(c if c.isdigit() else ' ' for c in string).split()]
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我无法在SO上找到答案:
谢谢
我知道我可以使用正则表达式在python中过滤数字中的文本,但这是最好的方法吗?
说我有一个字符串列表:
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
Run Code Online (Sandbox Code Playgroud)
是否有一个很好的功能,可以做到以下几点?
for string in [a,b,c]:
return numbers(string)
78
120
33
Run Code Online (Sandbox Code Playgroud) 说我有一个字符串
"There are LJFK$(#@$34)(,0,ksdjf apples in the (4,5)"
Run Code Online (Sandbox Code Playgroud)
我希望能够将数字动态提取到列表中:[34, 0, 4, 5].
有没有一种简单的方法在Python中执行此操作?
换句话说,
有没有办法提取由任何分隔符分隔的连续数字簇?
如何删除字符串中第一个字母前的所有数字?例如,
myString = "32cl2"
Run Code Online (Sandbox Code Playgroud)
我希望它成为:
"cl2"
Run Code Online (Sandbox Code Playgroud)
我需要它工作任何长度的数字,所以2h2应该变成h2,4563nh3变成nh3等 编辑: 这个数字之间没有空格所以它与其他问题不一样,它特别是第一个数字,不是全部数字.
我试图找到文本中的所有数字并将它们返回到浮点数列表中。
文中:
我的代码似乎提取了用逗号和空格分隔的数字以及附加到单词的数字。但是,它提取以逗号分隔的数字作为单独的数字
text = "30feet is about 10metre but that's 1 rough estimate several numbers are like 2, 137, and 40 or something big numbers are like 2,137,040 or something"
list(map(int, re.findall('\d+', text)))
Run Code Online (Sandbox Code Playgroud)
下面的建议效果很好
不幸的是,下面的输出返回一个字符串:
nums = re.findall(r'\b\d{1,3}(?:,\d{3})*(?:\.\d+)?(?!\d)', text)
print(nums)
Run Code Online (Sandbox Code Playgroud)
我需要将输出作为浮点数列表返回,中间有逗号,但没有语音标记。
Eg.
extract_numbers("1, 2, 3, un pasito pa'lante Maria")
is [1.0, 2.0, 3.0]
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的尝试还没有成功。目前,我的代码读取
def extract_numbers(text):
nums = re.findall(r'\b\d{1,3}(?:,\d{3})*(?:\.\d+)?(?!\d)', text)
return (("[{0}]".format(
', '.join(map(str, nums)))))
extract_numbers(TEXT_SAMPLE)
Run Code Online (Sandbox Code Playgroud) 我有类似6M1D14M的字符串。我想从该字符串中提取所有数字。就像是:
[6, 1, 14]
Run Code Online (Sandbox Code Playgroud)
我怎么做?字符串的长度可以是任意的。介于两者之间的数字也可以是任意长度。
我已经尝试过这种方法,但是无法按照需要的方式拆分字符串。
我想要的是获取一个可能包含非数字字符的字符串,我想只从该字符串中提取2个数字.所以,如果我12 ds d21a想要提取我的字符串['12', '21'].
我试过用:
import re
non_decimal = re.compile(r'[^\d.]+')
non_decimal.sub("",input())
Run Code Online (Sandbox Code Playgroud)
并喂了这个字符串12 123124kjsv dsaf31rn.结果12123124很好,但我想要非数字字符来分隔数字.
接下来我试着添加split- non_decimal.sub("",input().split()).没有帮助.
我该怎么做(假设有一种方法不包括扫描整个字符串,迭代它并"手动"提取数字)?
为了更清楚,这是我想要实现的,在C中.
假设我有一个像这样输入的程序
串28的东西8个字2000
我想获取那个日期嵌入字符串,所以我可以得到:
day = 28
month = 8
year = 2000
Run Code Online (Sandbox Code Playgroud)
如何使用正则表达式实现此功能?
第8个月不能明确表示数字,但也写成"8月".
这不是标记为没有可选项的副本的情况.
如果我得到一个列表包含:
串28的东西八月字2000
通过该解决方案,我只得到[28, 2000],如果数字等于或小于12,则无法知道它是一个月还是一天.
我想将字符串中的数字提取到列表中,但也包括其他字母.
例如:
a='a815e8ef951'
Run Code Online (Sandbox Code Playgroud)
应该导致输出:
['a',815,'e',8,'f',951]
Run Code Online (Sandbox Code Playgroud)
谢谢!