删除读取之前或之后的空行()

2024-05-06 12:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

有一种方法,在将文件发送到PARSER()之前删除文件中的空白行:在下面的代码中:

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'

出于调试目的机器人.txt地址:

User-agent: *

Disallow: /

Tags: 文件importretxtreadparseaswith
3条回答

看看这个:

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)

您的实际问题显然是parse方法需要str,而不是list。你知道吗

还要检查:list是保留项,不应用作变量名。你知道吗

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)

Regex是您想要的,但是不要使用match,而是使用sub

s = f.read()
s = re.sub(r'\n+', '\\n', s)

Example on Regex101

相关问题 更多 >