如何用Python从字符串提取指定数据存入DataFrame并获取后续内容?
从目标字符串提取信息并生成Python DataFrame
当然可以!这种定位特定文本后提取后续内容的需求,用正则表达式来处理最精准高效了,刚好能完美匹配你要的信息。下面是完整的实现方案:
实现步骤
1. 导入所需库
首先我们需要re模块来做正则匹配,pandas来生成DataFrame:
import re import pandas as pd
2. 定义原始字符串并提取字段
针对你给出的原始字符串,我们可以通过正则表达式精准匹配每个目标字段的内容:
# 原始字符串 text = "Last year's Fortune rank: No.3 2016 revenue $215.6 billion One-year Revenue Change: -7.7%" # 提取排名(去掉No.,只保留数字) fortune_rank = re.search(r"Last year's Fortune rank: No\.(\d+)", text).group(1) # 提取营收数字(去掉$和billion,保留数值) revenue_2016 = re.search(r"2016 revenue \$(\d+\.\d+) billion", text).group(1) # 提取营收变化率 revenue_change = re.search(r"One-year Revenue Change: (-?\d+\.\d%)", text).group(1)
3. 整理成目标格式并生成DataFrame
把提取到的内容整理成你需要的格式,再转换成DataFrame:
# 整理成目标格式的字符串 formatted_text = ( f"Last year's Fortune rank: {fortune_rank} " f"2016 revenue ($B): {revenue_2016} " f"One-year revenue change: {revenue_change}" ) # 生成DataFrame data = { "Last year's Fortune rank": [int(fortune_rank)], "2016 revenue ($B)": [float(revenue_2016)], "One-year revenue change": [revenue_change] } df = pd.DataFrame(data) # 输出结果 print("整理后的文本:") print(formatted_text) print("\n生成的DataFrame:") print(df)
输出效果
运行代码后,你会得到:
整理后的文本: Last year's Fortune rank: 3 2016 revenue ($B): 215.6 One-year revenue change: -7.7% 生成的DataFrame: Last year's Fortune rank 2016 revenue ($B) One-year revenue change 0 3 215.6 -7.7%
正则表达式说明
Last year's Fortune rank: No\.(\d+):匹配排名部分,No\.转义点号避免匹配任意字符,(\d+)捕获数字部分2016 revenue \$(\d+\.\d+) billion:匹配营收,\$转义美元符号,(\d+\.\d+)捕获带小数的数值One-year Revenue Change: (-?\d+\.\d%):匹配变化率,-?匹配可选的负号,(\d+\.\d%)捕获带百分号的数值
内容的提问来源于stack exchange,提问作者biedlonka
相关产品推荐
相关产品推荐

