2013-06-19 2 views
1

Мое назначение - открыть файл и открыть текстовый файл и составить список всех используемых слов. Я могу открыть, прочитать и закрыть файл, однако, когда я пытаюсь разбить, я получаю следующую ошибку ниже.Как разбить текст на Python 3

Что это значит и какие-либо предложения?

file = open("decl.txt", "r") 
lines = file.readlines() 
text.close() 

# split oliver 
words = re.split('\W+', lines) 

print(words) 

Сообщение об ошибке

Traceback (most recent call last): 
    File "lab.py", line 18, in <module> 
    words = re.split('\W+', lines) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.py", line 165, in split 
TypeError: expected string or buffer 
+0

Почему вы закрываете текст? Не должно быть файл? – thefourtheye

ответ

2

file.readlines() возвращает список всех строк, вы должны использовать file.read():

Всегда используйте with при работе с файлами, он будет автоматически закрывать файл для вы.

with open("decl.txt", "r") as f: 
    data = f.read() 
# split oliver 
words = re.split('\W+', data) 

Помощь по file.read:

>>> print file.read.__doc__ 
read([size]) -> read at most size bytes, returned as a string. 

If the size argument is negative or omitted, read until EOF is reached. 
Notice that when in non-blocking mode, less data than what was requested 
may be returned, even if no size parameter was given. 
+0

Спасибо !!! Это решило мою проблему –

+0

My takeaway: 'readlines' возвращает ** список ** всех строк. благодаря – thefourtheye

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