Python изменить столбец в CSV для нескольких столбцов - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь изменить один столбец в CSV, чтобы изменить его на несколько столбцов. Следовательно, это CSV:

title,body,field_tag,field_titel
--------------------------------
"bladibla", "bla.....bla", "[""tag1"",""tag2"",""tag3"",""tag4""]", "bladiblabla"
"bladibla", "bla.....bla", "[""tag3"",""tag4"",""tag5"",""tag7"",""tag8"",""tag11""]", "bladiblabla"

Что я хочу, это:

title,body,field_titel,field_tag,field_tag,field_tag,field_tag,field_tag,field_tag
--------------------------------
"bladibla","bla.....bla","bladiblabla","tag1,"tag2","tag3","tag4"
"bladibla","bla.....bla","bladiblabla","tag3,"tag4","tag5","tag7","tag8","tag11"

Как этого добиться в Python? До сих пор я пробовал это, но не учитывая желаемый результат.

import csv
import numpy

with open('tester.csv','r') as csvinput:
    with open('testeroutput.csv', 'w') as csvoutput:
        writer = csv.writer(csvoutput, lineterminator='\n')
        reader = csv.reader(csvinput)

        all = []
        rij = next(reader)

        for row in reader:
            # print row['field_tag']
            strlist = row[3]
            #remove [ and ]
            strlist = (strlist.replace('[', ''))
            strlist = (strlist.replace(']', ''))

            text = strlist.split(',')

            #make string of list
            for tag in text:
                str1 = ''.join(tag)
                print str1
                print(type(str1))

                row.append('field_tag')
                all.append(row)
                row.append(str1)
                all.append(row)

        writer.writerows(all)

Надеюсь, что вы можете указать мне в лучшем направлении.

1 Ответ

0 голосов
/ 06 марта 2020

Используйте этот фрагмент:

import ast

for row in reader:
    row.extend(ast.literal_eval(row.pop(2)))
    writer.writerow(row)

row.pop(2) удаляет третий элемент из строки и возвращает его. ast.literal_eval() безопасно оценивает этот третий элемент, если он содержит «Python буквенные структуры: строки, байты, числа, кортежи, списки, диктовки, наборы, логические значения и None».

...