请教一个读取文件一行时的问题

请教一个读取文件一行时的问题

读取文件时,如果用 line= file.readline() 读取一行时,会连其文件路径,和本行内容,包括换行符一起读出来,这样就一个问题:如果这一行本身是个数字,会读成象这样职 “\xef\xbb\xbf12345\n”。

但我想仅要读取的本行数字,怎么过滤到我只想要的不包括本行换行符的内容,即数字12345?

谢谢!
line= file.readline()[:-1]
使用正则表达式过滤


QUOTE:
原帖由 3751 于 2007-5-8 13:07 发表
line= file.readline()[1:-1]

谢谢回复。

这个方法我曾试过,开始我以为是文件放得路径不对,后来把文件放到当前目录下,但仍然会有utf-8文件的标志头信息“\xef\xbb\xbf”,所以我是用 line= file.readline()[3:-1]来读的。但这样又出问题了,因为文件头信息仅是第一行有,以后的行是没有文件头信息,所以第二行和以后会变成从第四个数字读起了。

试file.read()和file.readlines()都没成,特别是readlines方法还会将空行写成一个单独的列表元素,给后边的转换造成了难点。


QUOTE:
原帖由 limodou 于 2007-5-8 13:08 发表
使用正则表达式过滤

谢谢思路
file=open(r'xxx.txt','rb')
t=file.readline().strip()
t=(t[3:] if t.startswith("\xef\xbb\xbf") else t)



QUOTE:
原帖由 3227049 于 2007-5-8 22:48 发表
file=open(r'xxx.txt','rb')
t=file.readline().strip()
t=(t[3:] if t.startswith("\xef\xbb\xbf" else t)

谢谢回复,昨晚我回去后也是拿startswith()方法来运算的

今天看你的回复用到了strip()方法,想请教下具体是什么个意思,有什么特别的好处?因为由str-->int时,python语言是可以自动忽略str首尾的whitespace属性的,而且strip()方法不带参数的话,也不能去掉对象中间的whitespace属性

>>> s="\n123456\n"
>>> int(s)+1
123457
>>> s
'\n123456\n'
>>> s="\n123\n456\n"
>>> s.strip()
'123\n456'

只是习惯性的trim一下str,没考虑int