2016-07-23 4 views
0

Я новичок здесь, а также новичок в программировании с помощью python как упражнение Мне нужно прочитать данные (lat & lon) из txt-файла со многими строками и преобразовать их в шейп файл с QGISЯ хочу передать данные из текстового файла в массив

После прочтения я найти способ извлечения данных в массив, а step1, но у меня есть SOEM вопросы ..

Я использую следующий код

X=[] 
Y=[] 
f = open('D:/test_data/test.txt','r') 
for line in f: 
    triplets=f.readline().split() #error 
X=X.append(triplets[0]) 
Y=Y.append(triplets[1]) 
f.close() 
for i in X: 
    print X[i] 

с ошибкой:

ValueError: Mixing iteration and read methods would lose data 

Продвижение - это предупреждение о потере остальных строк, но на самом деле я их не хочу.

ответ

3

for line in f: уже итерации через строку в файле, чтение, как она идет вместе. Таким образом, это должно быть:

for line in f: 
    triplets = line.split() 

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

with open('D:/test_data/test.txt','r') as f: 
    content = f.readlines() 
    for line in content: 
     triplets = line.split() 
     # append() 

См. Reading and Writing Files в python для получения дополнительной информации.

Кроме того, append() делает то, на что это похоже, поэтому вам не требуется назначение.

X.append(triplets[0]) # not X=X.append(triplets[0) 
+0

это, кажется, работает. теперь в моей попытке напечатать то, что я прочитал от , я получаю ошибку: TypeError: индексы индексов должны быть целыми, а не str в последней строке, где я пытаюсь распечатать X [i] Я знаю, что это строки и есть для преобразования в float, но используя X.append (float (triplets [0])) дайте мне ошибку: ValueError: недействительный литерал для float(): 49,24 –

+0

@NasosGkimi 'for i in X:' будет непосредственно итератировать через элементы 'X'. То есть 'i' является строкой' X', а не индексом. Таким образом, вы можете просто «напечатать (i)' – Ramon

+0

@NasosGkimi, если вы хотите итерации с помощью индекса - я действительно не вижу здесь смысла - вы можете использовать 'for i в диапазоне (len (X))' или 'для i, elem в перечислении (X)', где 'i' - это индекс, а' elem' - соответствующий строковый элемент. – Ramon

0

line уже есть линия. Получить триплеты по

triplets = line.split() 
+0

я сделать е изменения и я получаю новую ошибку TypeError: «ул» объект не вызываемая –

Смежные вопросы