Python: как отделить строку запятой

Я импортирую список csv в python через «fh». Он читает его по строкам и создает список элементов каждой строки. Теперь я хочу, чтобы каждый элемент списка был отделен (он имеет запятые) и помещается в новый список.

Теперь я получаю: y = ['1,2,3']

я хочу: y = ['1', '2', '3']

код у меня есть сейчас:

fh = open( "F:\S57To Buoy\ScheldeAdjustedPoints.csv" ); x = [] for line in fh.readlines(): y = [value for value in line.split()] print y paramBlock = mgGetParamBlock ("Vertex from mouse") mgParamSetDouble3 (paramBlock, "Vertex Position", y[0], y[1], y[2] ) mgExecute ("Vertex from mouse", paramBlock) fh.close() 

Парамблоки и т. Д. – это специальные вызовы программ, поэтому не беспокойтесь о них.

Я искал, но не нашел ничего полезного. И я не могу использовать модуль CSV btw. Благодаря!

4 Solutions collect form web for “Python: как отделить строку запятой”

Проблема в этой строке:

 y = [value for value in line.split()] 

Прежде всего, операция совершенно не нужна, результат будет таким же, как здесь:

 y = line.split() 

Но вам действительно нужно:

 y = line.strip().split(",") 

(строка из файла заканчивается на «\ n», поэтому ее разбиение возвращает список с двумя элементами: содержимое строки и пустое).

вызов readlines() уже создает список каждой строки, составляющей файл. теперь вам нужно только разделить каждую строку в соответствии с разделителем (в данном случае ',' ). вы уже вызываете split() , просто укажите разделитель:

 y = [value for value in line.split(',')] 

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

 y = line.split(',') 

в случае, если в начале и конце строки есть мусор, вам может понадобиться strip() строка:

 y = line.strip().split(',') 

на стороне примечания: если вы не работаете с файлом в другом месте вашего кода, вам не нужно открывать файл, а затем закрывать его. вы можете открыть его непосредственно в цикле for, сборщик мусора позаботится о том, чтобы освободить дескриптор файла и закрыть файл, когда цикл завершается. Кроме того, чтение файла в цикле for будет проходить через каждую строку файла.

 for line in open( "F:\S57To Buoy\ScheldeAdjustedPoints.csv" ): y = line.strip().split(',') print y 

(итерация через каждую строку может быть недоступна, если вы используете какую-то старую версию python.Я думаю, что она была добавлена ​​в python, начиная с 2.4)

Используйте модуль csv :

 import csv with open(r'F:\S57To Buoy\ScheldeAdjustedPoints.csv', 'r') as f: reader = csv.reader(f,delimiter=',') for row in reader: print row 

Если вы говорите, что не можете использовать csv , используйте следующую версию своего кода:

 with open(r"F:\S57To Buoy\ScheldeAdjustedPoints.csv") as f: for line in f: if line.strip(): x = line.split(',') # do stuff with x 

Я все время это делаю. это мой код:

 with open(CSV, "r") as CSV_read: next(CSV_read) # removes header (remove this line if there is no header) for line in CSV_read: vals = line.strip("\r\n").split(",") 
  • Python присваивает нескольким переменным одинаковое значение? поведение списка
  • Python: найдите ближайшую строку (из списка) в другую строку
  • Список пифонических кругов
  • python - найти позицию индекса в списке на основе частичной строки
  • Python: выберите подмножество из списка на основе набора индексов
  • Перемеживающие списки в Python
  • Список вопросов на Python
  • Python: как удалить все повторяющиеся элементы из списка
  • Python - лучший язык программирования в мире.