lines
là danh sách. re.findall()
không có danh sách.
>>> import re
>>> f = open('README.md', 'r')
>>> lines = f.readlines()
>>> match = re.findall('[A-Z]+', lines)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/lib/python2.7/re.py", line 177, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
>>> type(lines)
<type 'list'>
Từ help(file.readlines)
. I E. readlines()
là cho vòng/iterating:
readlines(...)
readlines([size]) -> list of strings, each a line from the file.
Để tìm tất cả ký tự chữ hoa trong tập tin của bạn:
>>> import re
>>> re.findall('[A-Z]+', open('README.md', 'r').read())
['S', 'E', 'A', 'P', 'S', 'I', 'R', 'C', 'I', 'A', 'P', 'O', 'G', 'P', 'P', 'T', 'V', 'W', 'V', 'D', 'A', 'L', 'U', 'O', 'I', 'L', 'P', 'A', 'D', 'V', 'S', 'M', 'S', 'L', 'I', 'D', 'V', 'S', 'M', 'A', 'P', 'T', 'P', 'Y', 'C', 'M', 'V', 'Y', 'C', 'M', 'R', 'R', 'B', 'P', 'M', 'L', 'F', 'D', 'W', 'V', 'C', 'X', 'S']
Thay thế 'f.readlines()' bằng 'f.read()'. –
Nếu các dòng là 'None', bạn sẽ gặp lỗi tương tự ở đây như thể bạn nhập danh sách. Điều này cũng sẽ xảy ra với 're.sub' trong cùng hoàn cảnh. Do đó nó là một TypeError (loại sai được nhập). Tôi chỉ đề cập đến điều này bởi vì tôi đã tìm kiếm những gì gây ra lỗi này và tìm thấy bài viết của bạn (và tôi đã có một Nonetype trên tai nạn). – Shule