Преобразование панд DF в json Python 3

У меня есть XML-файл, как это, который является серией в следующем DF

 userid | fid | response
 -----------------------
 1125 | 58940 | xml1
 3344 | 47839 | xml2
 3455 | 12335 | xml3

Столбец ответа содержит грязный XML-файл. Проблема в том, чтобы очистить XML-файлы, а затем изменить df на json. XML-файлы также должны быть преобразованы в json. Ожидаемый результат примерно такой:

 "userid" : 1125,
 "fid" : 58940,
 "response" : "xml(in json)"

В моем текущем коде я очистил XML и вставил его обратно в DF. Должен ли я сначала преобразовать xml в json, а затем вставить в DF или вставить в DF, а затем преобразовать всю строку в json? Я думаю, что я должен сначала преобразовать XML в JSON, а затем вставить в DF. Мой текущий код выглядит так:

import pandas as pd
import re
from xml.dom import minidom

raw_data = pd.read_csv('C:\\Users\\Desktop\\xml.csv', sep = '|')
df = pd.DataFrame(raw_data, columns = ['userid', 'fid', 'response'])
file = open("testfile.txt", "w")
file.write(df.loc[0][2])
file.close()

# Cleaning the XML.
with open("testfile.txt") as f:
    file = f.read()

    # Replace up to <?xml tag.
    file = re.sub(r'\A.*(<\?xml.*)\Z', r'\1', file, flags = re.S)

    # Strip file and add \n at each instance of >.
    file = file.strip()
    file = file.replace('>', '>\n')

    # Split file and make a list with no empty items.
    file_list = file.split('\n')
    file_list = [item for item in file_list if item != '']

    # Remove unwanted xml declarations.
    if file_list[0][:5] == '<?xml':
        del file_list[0]
    if file_list[0][:13] == '<creditBureau':
        del file_list[0]
    if file_list[-1] == '",':
        del file_list[-1]
    if file_list[-1] == '</creditBureau>':
        del file_list[-1]
    if file_list[1501] == '<highRiskFraudAlert searchStatus=""availableClear""/>':
        file_list[1501] = '<highRiskFraudAlert searchStatus="availableClear"/>'

    # Adding <root> element
    file_list.insert(0, '<root>')
    file_list.append('</root>')

# Conveting to String and writing to new xml file.
str = ''.join(file_list)
with open("final_xml.xml","w") as f:
    f.write(str)

#parsing xml
tree = ET.parse('final_xml.xml')
pretty_xml = minidom.parseString(str).toprettyxml(indent = "    ")
print(pretty_xml)

Есть подсказки или решения?

0 ответов

Другие вопросы по тегам