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

Python处理XML转CSV:如何仅提取tct-id属性的部分内容

解决XML中tct-id属性的编号提取问题

嘿,作为Python新手能搞定XML转CSV已经超棒啦!针对你遇到的tct-id带版本号、没法匹配数据库纯编号的问题,我给你两个简单实用的解决方案:

方法一:字符串分割(格式固定时首选)

你的tct-id格式是编号;版本号;,直接用split(';')拆分后取第一个元素就好,简单粗暴还靠谱:

# 假设你已经从XML中拿到了tct_id的值
tct_id = "D-TW-0010054;3;"
clean_document_id = tct_id.split(';')[0]
print(clean_document_id)  # 输出: D-TW-0010054

只要你的tct-id始终遵循编号;版本号;的格式,这个方法完全够用,不需要额外依赖库。

方法二:正则表达式(格式可能变动时更灵活)

如果担心未来tct-id的格式有小变化(比如偶尔没有版本号分号),用正则表达式匹配编号部分会更稳妥:

import re

tct_id = "D-TW-0010054;3;"
# 匹配所有非分号的字符,直到遇到第一个分号
match_result = re.match(r'([^;]+)', tct_id)
if match_result:
    clean_document_id = match_result.group(1)
    print(clean_document_id)  # 输出: D-TW-0010054

这个正则[^;]+会匹配任意不是分号的字符,就算遇到tct-id="D-TW-0010054"这种没有版本号的情况,也能正确提取编号。

整合到你的XML转CSV代码里

假设你用xml.etree.ElementTree处理XML,大概可以这样修改现有代码:

import xml.etree.ElementTree as ET
import csv

# 解析XML文件
tree = ET.parse('your_input.xml')
root = tree.getroot()

# 写入CSV
with open('output.csv', 'w', newline='', encoding='utf-8') as csv_file:
    fieldnames = ['DocumentID']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    
    writer.writeheader()
    # 遍历所有带tct-id属性的元素
    for element in root.findall('.//*[@tct-id]'):
        raw_tct_id = element.get('tct-id')
        # 这里用你选的方法处理编号
        clean_id = raw_tct_id.split(';')[0]
        writer.writerow({'DocumentID': clean_id})

这样处理后,CSV里的DocumentID就和数据库的纯编号格式完全一致啦,后续做diff validation就没问题了!

内容的提问来源于stack exchange,提问作者Jack Edwards

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:25:00