Форум сайта python.su
очень хорошо. Отломалось у вас в строке 7, судя по трэйсбэку. Отломалось потому, что в вашем входном потоке внутри поля, не включенного в кавычки обнаружился символ начала строки.
Рекомендации будут такие:
1. Убрать код, пишущий в Output1, чтобы не смущал. Задание было пока только прочитать файл.
2. Вывести lines внутри цикла. Если падает не на первой строке, то можно будет увидеть результат чтения.
3. Показать здесь строку, на которой падает.
PS: название переменной lines не соответствует реальности. Мы читаем по одной строке, а lines означает ‘строки’.
Отредактировано (Май 18, 2010 15:11:32)
Офлайн
EdОн ведь пишет что
2. Вывести lines внутри цикла. Если падает не на первой строке, то можно будет увидеть результат чтения.
OlyaleoФайл не так открыт?
new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
Офлайн
Во-первых, меня можно и на ты. Во-вторых, после этой ошибки у меня полетел комп, даже он бедненький не выдержал моего, мягко сказать недопонимания в программирование. Мои данные, все таки удалось восстановить, которые были потеряны. И я продолжила мучения свои и компа. Этой ошибки теперь нет, зато появилась другая, ошибка - попытка применить операцию к объекту не того типа, как исправить?:
File "2.py", line 10, in <module>
for i in xrange((line)-step))
TypeError: unsupported operand type(s) for -: 'list' and 'int'
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
data = csv.reader(open('Input.csv', 'r'), delimiter=',', quotechar='|')
for line in data:
step = 28
it = (line[i:i+step]
for i in xrange((line)-step))
print it
Отредактировано (Май 20, 2010 11:46:42)
Офлайн
Ты усложняешь задачу. Нужно пока тупо прочитать попытаться. Вот так:
import csv
data = csv.reader(open('Input.csv', 'r'), delimiter=',', quotechar='|')
for line in data:
print line
Отредактировано (Май 20, 2010 15:24:23)
Офлайн
Ed, сделала, как вы сказали. Код работает, файл читает:
[olga ~/python_file/generator]-% python 2.py
['abcdefghijklmnopqrstuvwxyzhdfjkdhfreiufrejkhgjsdgfksfgkljetrhtruihtkjhgosigjlkdhrskjdge']
Отредактировано (Май 21, 2010 07:18:02)
Офлайн
Меня тоже можно на ты.
Что-то вывод не выглядит, как csv. Там что, один столбец? Если это не csv, то почему расширение у файла .csv и зачем мы его читаем csv.reader-ом?
Офлайн
в файле, изначально, один столбец, даже одна строчка с цепочкой букв, но после генерации с буквами, результаты хочу записать в исходный файл в csv, в отдельные столбцы
а зачем мы его начали читать csv.reader-ом, просто были советы с твоей стороны так сделать, вот я и изменила свой код
Офлайн
Если это так, то нет смысла читать его csv. Читаем так:
data = open('Input.csv', 'r')
for line in data:
print line
step = 28
it = (line[i:i+step] for i in xrange((line)-step))
Офлайн
Ed, код у меня рабочий. Вот только исходная строка у меня разбивается по 28 символов с шагом +1.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
data = open('Input.csv', 'r')
for string in data.readlines():
step = 28
it = (string[i:i+step] for i in xrange(len(string)-step))
for row in it:
print row
[olga ~/python_file/generator]-% python 4.py
abcdefghijklmnopqrstuvwxyzhd
bcdefghijklmnopqrstuvwxyzhdf
cdefghijklmnopqrstuvwxyzhdfj
defghijklmnopqrstuvwxyzhdfjk
efghijklmnopqrstuvwxyzhdfjkd
......................................
kljetrhtruihtkjhgosigjlkdhrs
ljetrhtruihtkjhgosigjlkdhrsk
jetrhtruihtkjhgosigjlkdhrskj
etrhtruihtkjhgosigjlkdhrskjd
trhtruihtkjhgosigjlkdhrskjdg
Отредактировано (Май 24, 2010 13:05:34)
Офлайн
Во-первых readlines в данном случае не нужен, а в случае больших файлов еще и вреден, поскольку читает весь файл.
Я же показал как читать, просто возьми и попользуй. Во-вторых step - это у нас константа, поэтому лучше сделать ее глобальной и поместить в начало файла: STEP=28.
Остальное хорошо. Теперь следующий этап - заменить цикл вывода на использование csv.writer. Дерзай!
Подсказка: Выходной файл .csv нужно открыть до начала нашего цикла чтения. Для записи одной строки в csv использовать метод writerow.
Отредактировано (Май 24, 2010 13:15:25)
Офлайн