有没有办法从文本文件中带括号的数字中提取值?

我有一个非常基本的问题,但我没有在互联网上找到任何“漂亮”的解决方案。我想要的只是从有字符串和括号的行中提取数字。
例如,我有一个输出文本文件如下:

test: [1, 50, 200]

我想提取值 1、50 和 200,以便制作这些数字的 numpy 数组。

这个问题已经通过一些拆分和剥离解决了,但我觉得这个解决方案不是很优雅。


慕村9548890
浏览 241回答 3
3回答

鸿蒙传说

你可以使用一个非常幼稚的正则表达式:import numpy as npimport renums = map(int, re.findall(r'\d+', 'test: [1, 50, 200]'))print(np.array([n for n in nums]))# [  1  50 200]另一种选择是使用正则表达式来提取整个列表,然后使用literal_eval:import numpy as npimport refrom ast import literal_evalli = re.search(r'(\[.*\])', 'test: [1, 50, 200]').group()print(np.array(literal_eval(li)))# [  1  50 200]

守着一只汪

我实际上可能会使用涉及拆分或正则表达式的东西来进行一些错误检查和安全性 --- 以确保输入中没有隐藏任何恶意内容。但是你可以做这样的事情。我假设你在一个字符串变量中有你的文本行line。然后你可以做from ast import literal_evalline = "test: [1, 50, 200]"    # or whatever your line isarray = literal_eval(line.partition(":")[2].strip())但要小心,因为eval在不确定的输入上运行是危险的。

Qyouu

ast.literal_eval 给出一种解决方案:import asts = 'test: [1, 50, 200]'ast.literal_eval(s.split(':')[1].strip())#evaluates to [1, 50, 200]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python