lines
एक सूची है। re.findall()
सूचियां नहीं लेता है।
>>> 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'>
help(file.readlines)
से। अर्थात। readlines()
के लिए छोरों/बार-बार दोहराना है:
readlines(...)
readlines([size]) -> list of strings, each a line from the file.
आपकी फ़ाइल के सभी अपरकेस वर्णों ढूंढने के लिए:
>>> 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']
'f.readlines()' 'f.read()' से बदलें। –
यदि लाइनें 'कोई नहीं' थीं तो आपको एक ही त्रुटि मिल जाएगी जैसे कि आप एक सूची इनपुट करते हैं। यह एक ही परिस्थिति में 're.sub' के साथ भी होगा। इसलिए यह एक टाइपरर (गलत प्रकार दर्ज किया जा रहा है) है। मैं बस इसका जिक्र करता हूं क्योंकि मैंने इस त्रुटि के कारण खोज की और आपकी पोस्ट पाई (और मेरे पास दुर्घटना पर एक गैर प्रकार का था)। – Shule