文件的第一个 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")
我正在阅读的文件的第一行似乎遵循与其余行不同的规则。
预期行为:每一行在开头检查一个散列,如果没有找到,则执行操作。
实际行为:除第一行外都是如此。第一行以某种方式进入 checkForMatch().
中的 try/exceptHack:如果我包含第二个 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")