Python - 读取时忽略每行的第一个字符(制表符)
这是我之前问题的延续(如果你感兴趣可以去看看)。
我已经看到隧道尽头的光明,但还有最后一个问题。
不知道为什么,每一行的开头都有一个制表符(TAB)。
我该怎么忽略掉这个第一个字符(在我的情况下是“tab” (\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和其他方法,但它们都会去掉所有的字符,这样就会导致元组填充失败。
相关问题:
4 个回答
1
来自文档的内容:
str.lstrip([chars])
这个方法会返回一个新字符串,去掉开头的字符。chars参数是一个字符串,用来指定要去掉的字符。如果你不提供这个参数或者给它传入None,那么默认会去掉空格。需要注意的是,chars参数不是前缀;也就是说,它会去掉所有组合的这些字符。
如果你只想去掉行首的制表符,可以使用
str.lstrip("\t")
这样做的好处是,你不需要检查第一个字符是不是制表符。不过,如果有多个制表符,而你想保留第二个及之后的制表符,那你就需要用到 str[1:] 了。
2
要从一个字符串中去掉第一个字符,可以使用以下代码:
>>> s = "Hello"
>>> s
'Hello'
>>> s[1:]
'ello'
5
你可以用 line = line[1:] 这个方法来去掉字符串的第一个字符。不过,如果你这么做的话,最好先检查一下第一个字符是不是一个制表符(tab),这样可以避免在没有制表符的情况下错误地处理数据。
其实还有一个更简单的方法,它可以处理更多的情况,而且如果要去掉的内容不存在的话也不会出错。你可以用 line = line.strip() 来去掉字符串开头和结尾的所有空白字符。如果你只想去掉开头的空白,可以用 .lstrip(),并且如果你只想去掉制表符,可以在这两个方法里加上 '\t' 作为参数,这样就可以保留其他的空白字符了。