从字符串中提取值

4 投票
4 回答
1960 浏览
提问于 2025-04-15 18:12

我正在尝试从一个字符串中提取一些值,我试过使用 re.match,但一直没有成功。这个字符串是:

'/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'

我试过:

 map(int,re.search("Value\s*=\s*").group(1))

还有:

'/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'.split(' = ')

我不知道还可以添加什么或者该怎么做。我想获取属性 'Value, Max, Step' 及其对应的值。有没有什么办法可以做到这一点?

谢谢大家的帮助

4 个回答

0
s = '/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
data = {}

for l in s.split('\r\n'):
     if " = " in l:
             k,v = l.split(" = ")
             data[k] = int(v)

print data

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

3

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按预期工作。这种情况可能会让人感到困惑,因为我们可能不知道问题出在哪里。

通常,解决这类问题的第一步是检查代码,看看有没有写错的地方。接着,可以查看相关的文档,看看有没有说明这个功能的使用方法。文档就像是使用说明书,里面会告诉你怎么正确使用这个工具。

如果自己解决不了,还可以去一些论坛,比如StackOverflow,向其他人求助。在这些地方,很多有经验的程序员会分享他们的经验和解决方案,帮助你找到问题的答案。

总之,遇到问题时,不要着急,先检查代码,再查阅文档,最后可以寻求社区的帮助。这样一步一步来,问题通常都能得到解决。

>>> s = '/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
>>> bits = s.split('\r\n')
>>> val, max_val, step = [int(bits[i].partition(' = ')[2]) for i in [1, 3, 4]]
>>> val
1800
>>> max_val
3600
>>> step
1
6

对于这个特定的字符串,下面的代码可以把它解析成一个字典:

s = '/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
d = {}
for pair in [val.split('=') for val in s.split('\r\n')[1:-1]]:
    d[pair[0]] = int(pair[1])

撰写回答