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