Как зациклить массивы в CSV с Python? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь зациклить несколько массивов и записать их в CSV-файл с нужными именами файлов.

Вот рабочий код, но он плохой и не профессиональный:

# zip arrays
  rows = zip(en,pl,tr,de)    

# Write to CSV
  with open('translations.csv', mode='w', newline='', encoding="utf-8") as csv_file:
    fieldnames = ['English', 'Polish', 'Turkish', 'German']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)

    writer.writeheader()
    for row in rows:
      info  = inspect.getmembers(row)
      english = row[0]
      polish = row[1]
      turkish = row[2]
      german = row[3]
      writer.writerow({'English': english, 'Polish':polish, 'Turkish':turkish, 'German':german})  

Я пытался изменить код, и он действительно запутался:

# zip arrays
 rows = zip(en,pl,tr,de)  

# Write to CSV
  with open('translations.csv', mode='w', newline='', encoding="utf-8") as csv_file:
    fieldnames = ['English', 'Polish', 'Turkish', 'German']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    writer.writeheader()
    for row in rows:
      for i in range(len(fieldnames)):
        writer.writerow({fieldnames[i]:row[i]})  

Так что каждый перевод должен быть под правильным именем файла. Вот результат этого кода:

English,Polish,Turkish,German
Test Name,,,
,Test Name,,
,,Test Name,
,,,Test Name
Nazwa testu,,,
,Nazwa testu,,
,,Nazwa testu,
,,,Nazwa testu
test Adı,,,
,test Adı,,
,,test Adı,
,,,test Adı
Testname,,,
,Testname,,
,,Testname,
,,,Testname

Это действительно запутано. Пожалуйста, помогите мне решить эту проблему. Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2019

Вам, наверное, нужно это. Вместо

for i in range(len(fieldnames)):
    writer.writerow({fieldnames[i]:row[i]})  

Использование:

    writer.writerow(dict(zip(fieldnames, row)))  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...