#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. Пройдитесь по строкам выполнения. Это должно дать вам подсказку