这是我之前问题的延续(如果你好奇,请检查它们)。
我已经看到了隧道尽头的曙光,但还有最后一个问题。
出于某种原因,每一行都以制表符开头。
我怎样才能忽略第一个字符(在我的例子中是“制表符”(\t))?
filename = "terem.txt"
OraRend = collections.namedtuple('OraRend', 'Nap, OraKezdese, OraBefejezese, Azonosito, Terem, OraNeve, Emelet')
csv.list_dialects()
for line in csv.reader(open(filename, "rb"), delimiter='\t', lineterminator='\t\t', doublequote=False, skipinitialspace=True):
print line
orar = OraRend._make(line) # Here comes the trouble!
文本文件:
http://pastebin.com/UYg4P4J1
(不能真正将它与所有选项卡一起粘贴到此处。)
我找到了lstrip、strip等方法,它们都会吃掉所有的字符,所以元组的填充会失败。
请您参考如下方法:
您可以执行 line = line[1:] 以仅去除第一个字符。但是如果你这样做,你应该添加一个断言第一个字符确实是一个制表符,以避免在没有前导制表符的情况下破坏数据。
有一个更简单的替代方案,它还可以处理其他几种情况,并且如果要删除的内容不存在,也不会破坏内容。您可以使用 line = line.strip() 去除所有前导和尾随空格。或者,使用 .lstrip() 仅去除前导空格,如果您想保留其他空格,则将 '\t' 作为参数添加到任一方法调用中删除选项卡。
