Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2013 13:03:12

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

Пишу простейший код:

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

Офлайн

#2 Окт. 3, 2013 13:24:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

print line1
что дает?



Офлайн

#3 Окт. 3, 2013 13:33:49

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

FishHook
что дает?
Дает то, что нужно. Только не могу понять, почему оно делает вид, что есть первый элемент списка, когда его нет:
['', '134,92', '54,75']

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

Офлайн

#4 Окт. 3, 2013 13:38:05

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

Вы в строке

line2 = line1.reverse()

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

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

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

 line1.reverse()



Отредактировано 4kpt (Окт. 3, 2013 13:40:43)

Офлайн

#5 Окт. 3, 2013 13:39:24

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

Спрошу даже проще. Есть ли простой способ прочитать файл следующей структуры:

54,75	134,92	
54,81 135,27
54,61 135,37
54,56 135,01

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

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

Отредактировано Suliman (Окт. 3, 2013 13:40:51)

Офлайн

#6 Окт. 3, 2013 13:44:31

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

Можно.

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



Отредактировано 4kpt (Окт. 3, 2013 13:46:51)

Офлайн

#7 Окт. 3, 2013 14:01:19

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

4kpt
Можно.
А в вашем коде получается будет двухмерный массив, так? Или ошибаюсь?

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

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

Офлайн

#8 Окт. 3, 2013 14:10:24

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

Уберите в конце выбор первого элемента, т.е. должно получиться

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

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



Отредактировано 4kpt (Окт. 3, 2013 14:11:28)

Офлайн

#9 Окт. 3, 2013 14:33:55

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

А вторую и третью строку как читать?

Да одномерного хватит.

Офлайн

#10 Окт. 3, 2013 14:37:14

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Не получается перевести list в строку

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. Если это опять не то, то дайте исходные данные и результат, который Вы ожидаете получить.



Отредактировано 4kpt (Окт. 3, 2013 14:43:17)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version