[Справка] Извлечение из файла csv и вывод текста (python) [Справка]

#python #csv #txt

#python #csv #текст

Вопрос:

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

Я прочитал файл ‘average-latitude-longitude-countries.csv’ в Южном полушарии.

Выведите название страны в файле ‘result.txt ‘

Вопрос:

Я хочу, чтобы вы исправили это, чтобы его можно было распечатать в соответствии с файлом изображения.

 infile = open("average-latitude-longitude-countries.csv","r")
outfile = open("average-latitude-longitude-countries.txt","w")
joined = []
infile.readline()
for line in infile:
  splited = line.split(",")
  if len(splited) > 4:
    if float(splited[3]) < 0:
      joined.append(splited[2])
      outfile.write(str(joined)   "n")
  else:
    if float(splited[2]) < 0:
      joined.append(splited[1])
      outfile.write(str(joined)   'n')
 

Ответ №1:

Однако сложно не публиковать заголовок / первые несколько строк CSV, предполагая, что ваш код работает и список стран успешно заполнен. Затем вы можете заменить строку

 outfile.write(str(joined)   'n')
 

с помощью:

 outfile.write("n".join(joined))
 

или

с этими 2 строками:

 for country in joined:
    outfile.write("%sn" % country)
 

Имейте в виду, что эти подходы просто выполняют свою работу. однако не оптимально

Дополнительные подсказки:

вы можете взглянуть на csv-модуль стандартного Python. может упростить синтаксический анализ

Кроме того, splited = line.split(",") это может привести к неправильному выводу, если есть одно заключенное в кавычки поле, содержащее «,» . вот так: field1_value,»поле 2, значение«, field3, field4 , …

Обновление: Теперь я понял вас, прежде всего, вы сбрасываете весь агрегированный массив в файл для каждой прочитанной строки. вы должны продолжать добавлять в массив в цикле. затем после всего цикла выполните сброс один раз (разделив накопленный массив, как указано выше)

Вот ваш код, слегка измененный:

 infile = open("average-latitude-longitude-countries.csv","r")
outfile = open("average-latitude-longitude-countries.txt","w")
joined = []
infile.readline()
for line in infile:
  splited = line.split(",")
  if len(splited) > 4:
    if float(splited[3]) < 0:
      joined.append(splited[2])
      #outfile.write(str(joined)   "n")

  else:
    if float(splited[2]) < 0:
      joined.append(splited[1])
      #outfile.write(str(joined)   'n')


outfile.write("n".join(joined))
 

Комментарии:

1. Не могли бы вы прикрепить код, чтобы его можно было распечатать в соответствии с файлом изображения?

2. Извините, но в файле txt ничего нет. Пожалуйста, проверьте.

3. Программа должна работать при условии ввода тех же данных, что и в изображении. Попробуйте поместить точки останова в IDE. Пройдитесь по строкам выполнения. Это должно дать вам подсказку