2013-12-02 3 views
1
import csv, Tkinter 

with open('most_common_words.csv') as csv_file: # Opens the file in a 'closure' so that when it's finished it's automatically closed" 
    csv_reader = csv.reader(csv_file) # Create a csv reader instance 

    for row in csv_reader: # Read each line in the csv file into 'row' as a list 
     print row[0] # Print the first item in the list 

Я пытаюсь импортировать этот список наиболее распространенных слов, используя csv. Она продолжает давать мне ту же ошибкуПопытка импортировать список слов с использованием csv (Python 2.7)

for row in csv_reader: # Read each line in the csv file into 'row' as a list 
Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode? 

Я попробовал несколько различных способов сделать это, как хорошо, но они не работают либо. Какие-либо предложения?

Также, где этот файл необходимо сохранить? Можно ли просто быть в той же папке, что и программа?

+0

Можете ли вы показать, как выглядит ваш файл csv? – aIKid

+0

Что произойдет, если вы откроете файл в универсальном режиме новой строки? Какой разделитель используется в вашем файле? Какие символы цитат? Какие новые линии? –

+0

Это простой список слов. Когда я его открываю, он открывается в Excel с одним столбцом и 500 строками из 500 разных слов. – user2825385

ответ

2

Вы всегда должны открывать CSV-файл в двоичном режиме (Python 2) или в универсальном режиме новой строки (Python 3). Кроме того, убедитесь, что ограничители и кавычки являются , и ", или вам необходимо указать иначе:

with open('most_common_words.csv', 'rb') as csv_file: 
    csv_reader = csv.reader(csv_file, delimiter=';', quotechar='"') # for EU CSV 

Вы можете сохранить файл в той же папке, что и программа. Если вы этого не сделаете, вы можете указать правильный путь до open(). Обязательно используйте сырые строки, если вы на Windows, в противном случае обратные косые может обмануть вас: open(r"C:\Python27\data\table.csv")

+0

Почему вы всегда должны открываться в двоичном режиме? Я видел это раньше, но никогда не видел объяснений относительно того, почему ... –

+1

@SteveP .: Короткий ответ: [Потому что документы говорят так] (http://docs.python.org/2/library/csv. HTML # csv.reader). Длинный ответ: поскольку поля CSV могут содержать встроенные новые строки, и они не обязательно совпадают с новыми символами, такими как те, которые используются для разграничения строк файла CSV. –

0

Кажется, у вас есть файл с одной колонкой, как вы говорите здесь:

Это простой список слов. Когда я его открываю, он открывается в Excel с одним столбцом и 500 рядами по 500 слов.

Если да, то вам не нужен модуль CSV на все:

with open('most_common_words.csv') as f: 
    rows = list(f) 

Примечание в этом случае каждый элемент списка будет новой строки добавляется к нему, так что если ваш файл :

apple 
dog 
cat 

rows будет ['apple\n', 'dog\n', 'cat\n']

Если вы хотите, чтобы лишить конец строки, то вы можете сделать т его:

with open('most_common_words.csv') as f: 
    rows = list(i.rstrip() for i in f) 
Смежные вопросы