Найти - Пользователи
Полная версия: Не получается перевести list в строку
Начало » Центр помощи » Не получается перевести list в строку
1
Suliman
Пишу простейший код:

import csv
fread = csv.reader(open('D:\\Proj\\Gmail\\test.txt'), delimiter='\t')
line1 = fread.next()
line2 = line1.reverse()
print ' '.join(line2)
Пытаюсь вывести line2 на экран.

Поулчаю следующую ошибку:
Traceback (most recent call last):
File "D:\Proj\Gmail\1.py", line 8, in <module>
print ' '.join(line2)
TypeError
FishHook
print line1
что дает?
Suliman
FishHook
что дает?
Дает то, что нужно. Только не могу понять, почему оно делает вид, что есть первый элемент списка, когда его нет:
['', '134,92', '54,75']

Вот первая строка текстового файла
54,75	134,92	
Если таб в конце вроде как и есть, то как он в начале умудряется появиться?
4kpt
Вы в строке

line2 = line1.reverse()

line2 присваиваете None

Что по Вашему должен возвращать метод .reverse()? Он изменяет список, но возвращает None. При этом список line1 поменял свое направление…

Замените строку на

 line1.reverse()
Suliman
Спрошу даже проще. Есть ли простой способ прочитать файл следующей структуры:
54,75	134,92	
54,81 135,27
54,61 135,37
54,56 135,01

Мне каждая из четырех строк нужна в виде отдельного списка, чтобы можно было reverse сделать и отдельно ей управлять. А потом записать в измененом виде в другой текстовый файл.

4kpt
Что по Вашему должен возвращать метод .reverse()?
А разве в line2 я не получу список перевернутый?
4kpt
Можно.

with open('Путь', 'r') as file_:
    all_line = []
    for line in file_:
        all_line.append(line.strip().split())
print all_line

или

with open('Путь', 'r') as file_:
    all_line = [line.strip().split() for line in file_]
print all_line
Suliman
4kpt
Можно.
А в вашем коде получается будет двухмерный массив, так? Или ошибаюсь?

Почему следующий код у меня читает по символам, хотя вроде бы он должен читать целиком строку.
fread = open('D:\\Proj\\Kolya_img\\Gmail\\test.txt')
line1 = fread.readline()[1]
print (line1)

Во всяком случае в примерах я нашел, что он читает строку целиком, а в квадратных кобках указывается номер этой самой строки.
4kpt
Уберите в конце выбор первого элемента, т.е. должно получиться

line1 = fread.readline() # Убрать [1]

Вы хотите получить одномерный массив?
Suliman
А вторую и третью строку как читать?

Да одномерного хватит.
4kpt
with open('Путь', 'r') as file_:
    all_line = []
    for line in file_:
        all_line.extend(line.strip().split())
print all_line

Если Вам нужны цифры

with open('Путь', 'r') as file_:
    all_line = [float(digit) for line in file_ for digit in line.strip().split()]
print all_line

P.S. Если это опять не то, то дайте исходные данные и результат, который Вы ожидаете получить.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB