在以下代码中,有没有一种方法可以在将文件中的空白行发送到parse()之前将其删除:
import robotexclusionrulesparser as rerp
p = rerp.RobotExclusionRulesParser()
with open('robots.txt') as f:
s = f.read()
p.parse(s)
print(p)
我尝试了这个但没有成功:
import re
import robotexclusionrulesparser as rerp
p = rerp.RobotExclusionRulesParser()
list = []
with open('robots.txt') as f:
s = f.read()
if not re.match(r'^\s*$', s):
list.append(s)
p.parse(list)
print(p)
哪个返回:
Traceback (most recent call last):
File "test.py", line 10, in <module>
p.parse(list)
File "/usr/local/lib/python2.7/dist-packages/robotexclusionrulesparser.py", line 530, in parse
s = s.decode("iso-8859-1")
AttributeError: 'list' object has no attribute 'decode'
出于调试目的,robots.txt的内容示例:
User-agent: *
Disallow: /
答案 0 :(得分:0)
答案 1 :(得分:0)
检查一下:
import re
lst = []
with open('robots.txt') as f:
for line in f:
if not re.match(r'^\s*$', line):
lst.append(line.strip())
print(lst)
您的实际问题显然是方法解析需要一个str而不是一个列表。
还请检查以下内容: list 是保留术语,不应用作变量名。
答案 2 :(得分:0)
parser()需要一个字符串,其中包含以“ \ n”结尾的行列表。
这是工作代码:
import re
import robotexclusionrulesparser as rerp
p = rerp.RobotExclusionRulesParser()
lst = []
with open('robots.txt') as f:
for line in f:
if not re.match(r'^\s*$', line):
lst.append(line.strip())
s = '\n'.join(lst)
p.parse(s)
print(p)