Добавление списков разного размера в базу данных

#python #python-3.x #database #list #sqlite

Вопрос:

У меня есть xml-файл. Я хочу прочитать этот xml-файл и добавить его значения в базу данных с помощью python. Я уже проанализировал данные до сих пор.

 import mysql.connector
import xml.etree.ElementTree as ET

dom = ET.parse('gg3.vmat')

tree = ET.parse('gg3.vmat')

root = tree.getroot()

parse_list = []

parse_list = root[0][0].text.split('n')

removing_blank = [x.strip(' ') for x in parse_list]

removing_space = [x for x in removing_blank if x.strip()]


for material in root.findall('Material'):
    density = material.find('strings').text
    name = material.get('name')
    # print(name, density)

    parse_list = density.split('n')

    removing_blank = [x.strip(' ') for x in parse_list]

    removing_space = [x for x in removing_blank if x.strip()]

    number = removing_space[0].split('=')[1]

    list = [c.split('=')[1] for c in removing_space[1:]]

    print(number, list)

 

Все списки, возвращенные в результате синтаксического анализа, имеют разные размеры.

Примеры списков:

 [' Hydrogen', ' "0.02162"', ' Zirconium', ' "0.97838"']

[' Chromium', ' "0.000997"', ' Iron', ' "0.001994"', ' Oxygen', ' "0.001196"', ' Tin', ' "0.013955"', ' Zirconium', ' "0.981858"']

 

Я хочу добавить значения из этого списка в базу данных следующим образом:

введите описание изображения здесь

Я попытался что-то сделать со струной f, но не смог ее вытащить.

 print([f'F#{list[i].strip()},{list[i]}' for i in range(len(list))])
 

Спасибо тем, кто уже потратил свое время.

Ответ №1:

Вам нужно перебрать список попарно. Поэтому используйте range(0, len(lst), 2) итерацию на 2.

Используйте strip('" ') для удаления пробелов и кавычек вокруг цифр.

 lst = [' Hydrogen', ' "0.02162"', ' Zirconium', ' "0.97838"']
print('F#'   ''.join(f'{lst[i].strip()},{lst[i 1].strip('" ')} for i in range(0, len(lst), 2))]