Мне нужно проанализировать некоторые данные CSV из XML-документа (TMX map format) с помощью python, но я застрял.Анализ CSV из документа XML
Я хочу использовать стандартные модули svg и ElTree, если это возможно, и я должен использовать Python 2.7.
Это фрагмент документа XML я работаю:
<layer name="Foreground" width="60" height="60">
<data encoding="csv">
0,0,0,0,0,1264,1265,1266,1267,
1268,1269,1270,0,0,0,0,0,0,
</data>
</layer>
Это фрагмент кода, я использую, чтобы открыть файл и попытаться проанализировать данные CSV:
import xml.etree.ElementTree as ET
import csv
self.tree = ET.parse('town.tmx')
self.root = self.tree.getroot()
self.bg = []
for layer in self.root.findall('layer'):
self.data = layer.find('data').text
self.reader = csv.reader(self.data)
for row in self.reader:
for col in self.reader:
print col
self.bg.append(col)
Но печать каждый элемент результатов по этому вопросу:
['0']['', '']['0']['', '']['0']['', '']['0']
Итак, я попытался заменить
self.reader = csv.reader(self.data)
с
self.reader = csv.reader([self.data])
Но теперь получаю ошибку:
csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
Глядя на модуль Docs CSV предлагается применить параметр функции Open(), но здесь, очевидно, невозможно.
Я пытался использовать itertext вместо текста, чтобы получить данные, как это:
for layer in self.root.findall('layer'):
self.data = layer.find('data')
self.string = "".join(self.data.itertext())
self.reader = csv.reader([self.string])
for row in self.reader:
for col in self.reader:
print col
self.bg.append(col)
Но я получаю ту же ошибку.
Я думаю, что в ElTree FindAll функция заменяет символы EOL с неправильным форматом, но я не знаю, как действовать дальше ...
Что бы Csv данные выглядят, как если бы он был правильно извлечен из фрагмент XML в вашем вопросе? Сколько строк в нем? Если есть только один, вы должны [изменить] свой вопрос и добавить фрагмент с по крайней мере двумя. – martineau
Информация в формате [Формат карты TMX] (http://doc.mapeditor.org/reference/tmx-map-format/) ссылка [мало говорит] (http://doc.mapeditor.org/reference/tmx-map-format/# data) о том, как данные форматируются, когда они «закодированы =» csv ». У вас есть лучшая ссылка? В противном случае, без более полного примера фактических данных, это все догадки ... – martineau