【问题标题】:Parse a CSV line containing embedded XML解析包含嵌入式 XML 的 CSV 行
【发布时间】:2015-01-20 11:34:13
【问题描述】:

我有一个包含一些 XML 数据的 CSV 文件。它看起来像这样:

meta1, meta2, sequence, "xml data"

xml 数据中的信息有时会包含逗号。

将这些信息分割成只有 4 个元素的元组的最佳方法是什么?

我尝试使用字符串切片,但序列有时有 1 或 2 个数字。

使用 line.split(',') 也不起作用:

for line in lines:
  line.split(',')

【问题讨论】:

标签: python xml csv


【解决方案1】:

使用 csv 模块,如果正确引用(如您所指),它将正确处理 xml 数据。

import csv

with open('input.csv') as infile:
    reader = csv.reader(infile)
    for row in reader:
        meta1, meta2, sequence, xml_data = row
        # etc

【讨论】:

  • 如果我有一些带引号的字段,我可以使用 csv 库吗?即:"Mike","Smith"
  • @EricZajac - 不,你不能 - 但这听起来不像是有效的 CSV 数据 - 嵌入的引号应该被转义;惯例是双引号,例如<name>""Mike"",""Smith""</name>。生成 CSV 数据的原因是什么?如果无法更改,您可能需要预处理传入数据以转义嵌入的引号(这对于 XML 属性很常见)。
【解决方案2】:

所以如果 csv 的样式总是:

meta1, meta2, sequence, "xml , , data" #as you said maybe some commas in the xml data

然后使用拆分,但使用最大拆分参数:

split(",", 3) #so at maximum there are 3 + 1 elements, because the maximum splitting is limited to 3 times splitting by ','.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    相关资源
    最近更新 更多