文件的第一个 readline() 是否有额外的字符?

Is there an extra character on the first readline() of a file?

我正在阅读的文件的第一行似乎遵循与其余行不同的规则。

预期行为:每一行在开头检查一个散列,如果没有找到,则执行操作。

实际行为:除第一行外都是如此。第一行以某种方式进入 checkForMatch().

中的 try/except

Hack:如果我包含第二个 readline 以通过第一个,则所有后续行都可以正常工作。如果我正确处理 try/except 以报告并跳过第一行,则所有后续行都可以正常工作。

rulesFile = open("example.tsv","r",encoding="utf-8")

# line = rulesFile.readline()
line = rulesFile.readline()
while line != "":
    line = line.lstrip()
    line = line.rstrip()
    if line != "" and line[0] != "#":
        checkForMatch(line, args)
    line = rulesFile.readline()

第一行和第二行都是散列,space,ascii文本。

# First line
# Second line

我查看了一些其他答案并尝试替换

line[0] != "#"

not line.startswith("#")

它可能更像 pythonic,但输出保持不变。

文件的第一行是否有一个秘密的初始字符,或者这里有其他一些微妙的问题?

您忘记了 BOM。

rulesFile = open("example.tsv", "r", encoding="utf-8-sig")