Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串中提取特定类别的数据(python)_Python - Fatal编程技术网

从字符串中提取特定类别的数据(python)

从字符串中提取特定类别的数据(python),python,Python,我有一个字符串示例: “去年的财富排名:2016年收入第3位2156亿美元一年收入变化:-7.7%” 我想从这些字符串中提取特定信息,将它们放在python数据框架中的某些类别下,例如: 去年的财富排名:3 2016年收入B美元:215.6 一年收入变化:-7.7% 有没有一种方法可以搜索字符串中的某些文本,并在找到该文本后返回下一个单词?这不是很干净,但它完成了任务: s = 'Last year''s Fortune rank: No.3 2016 revenue $215.6 billio

我有一个字符串示例: “去年的财富排名:2016年收入第3位2156亿美元一年收入变化:-7.7%”

我想从这些字符串中提取特定信息,将它们放在python数据框架中的某些类别下,例如:

去年的财富排名:3 2016年收入B美元:215.6 一年收入变化:-7.7%


有没有一种方法可以搜索字符串中的某些文本,并在找到该文本后返回下一个单词?

这不是很干净,但它完成了任务:

s = 'Last year''s Fortune rank: No.3 2016 revenue $215.6 billion One-year Revenue Change: -7.7%'
print('Last year''s Fortune rank:', s.split('No.')[1].split()[0])
print('2016 revenue ($B):', s.split('$')[1].split()[0])
print('One-year revenue change:', s.split(':')[-1])
输出:

Last years Fortune rank: 3
2016 revenue ($B): 215.6
One-year revenue change:  -7.7%

像这样的怎么样

s = "Last year's Fortune rank: No.3 2016 revenue $215.6 billion One-year Revenue Change: -7.7%"

import re
expression = re.compile(r"Last year's Fortune rank: No.(?P<rank>\d+) +2016 revenue \$(?P<revenue>[.0-9]+) billion One-year Revenue Change: (?P<revchange>[-.0-9]+)%")

m = expression.match(s)
print(m.groupdict())

当然,你可以用字典做任何你想做的事情

你可以尝试使用regex。所有文本的格式是否相同?@Kalyan是的,所有字符串都是以相同的方式构建的,唯一改变的是表示排名、收入等的特定值。
{'rank': '3', 'revenue': '215.6', 'revchange': '-7.7'}