lines
bir listedir. re.findall()
listeleri almaz.
>>> 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)
'dan. Yani readlines()
döngüler/iterating içindir:
readlines(...)
readlines([size]) -> list of strings, each a line from the file.
dosyanızda tüm büyük karakterleri bulmak için:
>>> 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()' yerine 'f.read()' yazın. –
Satırlar "Yok" ise, bir liste girdiğiniz gibi aynı hatayı alırsınız. Bu aynı durumda "re.sub" ile de meydana gelir. Bu yüzden bir TypeError (yanlış tip giriliyor). Sadece bundan bahsetmiştim, çünkü bu hatanın nedenini araştırdım ve gönderilerinizi buldum (ve kazayla ilgili bir Yazım yok). – Shule