You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从字符串中提取id、title等关键词对应的字段值

问题原因分析

你原来的find_title正则使用的贪婪匹配模式.*,会从第一个'title'出现的位置一直匹配到整个字符串末尾的最后一个逗号,无法正确截取每个title单独的内容。

解决代码

你可以使用更精准的正则匹配规则,按字段捕获对应值,也可以一次性匹配单条车辆的全量字段避免顺序错位,完整代码如下:

import re
import pandas as pd

# 读取文件内容
with open(r'C:\Users\xy\Desktop\xyz\test.txt', encoding = "ISO-8859-1") as f:
    html_text = f.read()

# 定义单个字段的正则规则,()内为要提取的捕获组
id_list = re.findall(r"'id':\s*'(\d+)'", html_text)
title_list = re.findall(r"'title':\s*'([^']+)'", html_text)
url_list = re.findall(r"'url':\s*'([^']+)'", html_text)
price_list = list(map(int, re.findall(r"'price':\s*(\d+)", html_text)))
km_list = list(map(int, re.findall(r"'km':\s*(\d+)", html_text)))
year_list = list(map(int, re.findall(r"'year':\s*(\d+)", html_text)))

# 转为DataFrame
df = pd.DataFrame({
    'id': id_list,
    'title': title_list,
    'url': url_list,
    'price': price_list,
    'km': km_list,
    'year': year_list
})

# 导出为CSV,如需导出Excel可以用df.to_excel()
df.to_csv(r'C:\Users\xy\Desktop\xyz\车辆信息导出.csv', index=False, encoding='utf-8-sig')

规则说明

  • 针对带单引号的字符串类型字段(id、title、url),使用[^']+匹配单引号包裹的内容,避免贪婪匹配越界
  • 针对数字类型字段(price、km、year),直接匹配数字即可,匹配后转成int类型方便后续处理
  • 导出CSV时使用utf-8-sig编码可以避免中文乱码问题

内容的提问来源于stack exchange,提问作者Georg Klippenstein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:36:02