如何自定义python的行结束符

如何自定义python的行结束符

我们读文件时,都是一行行读取。在perl中,默认状态下,用回车换行代表一行结束。但我们可以自定义$/,改变行结束符。比如$/="*_*",则此时遇到"*_*"才作为一行结束。python中有这种功能吗?

谢谢!
就按默认的读进来,再按特殊结束符处理不行吗?
我就是想改变默认方式啊,默认以"\n" (mac机器)作为行结束符。现在想做的就是当遇到"*_*"时,才算是一行。也就是重定义了行的概念。在perl中很容易做,不知道python有没类似功能。
我也有个疑问:
我有一个文件内容如下
id:  f4
id:  s5
id:  e9
....

用f.readlines(), 现在我想仅得到id的号,如f4, s5, e9等,
使用了  for i in range(3):
                  print  a[4:6]
在交互状态下,可以显示, 但是如果我把得到的id号, 写入一个文件的时候,就不是一行一行了,变成了f4s5e9....
, 但是如果我用a[4:]  来写入一个文件的时候,就是我想要的状态:
f4
s5
e9
...

请问,这两个有什么不同吗?
谢谢.

a[4:6]只会包含两个字符,而a[4:]就把换行符也包含进去了。


QUOTE:
原帖由 blackjimmy 于 2006-7-19 10:01 发表
我也有个疑问:
我有一个文件内容如下
id:  f4
id:  s5
id:  e9
....

用f.readlines(), 现在我想仅得到id的号,如f4, s5, e9等,
使用了  for i in range(3):
                  print  a[4:6]
在交互 ...



[Copy to clipboard] [ - ]
CODE:
>>> f=open(r'd:\a.txt', 'r')
>>> lines=f.readlines()
>>> lines
['id:  f4\n', 'id:  s5\n', 'id:  e9\n']
>>> for line in [l.strip() for l in lines]:
...         print line
...        
id:  f4
id:  s5
id:  e9
>>> for line in [l.strip() for l in lines]:
...         print line[4:6]
...        
f
s
e
>>> for line in [l.strip() for l in lines]:
...         print line[3:].strip()
...        
f4
s5
e9
>>>

谢谢版主解答这个问题,帮了很大忙。衷心感谢
如果是空白行,读出来的应该是‘\n',如果是文件结束,应该是‘ ’


QUOTE:
原帖由 littlegraph 于 2006-7-17 19:45 发表
我们读文件时,都是一行行读取。在perl中,默认状态下,用回车换行代表一行结束。但我们可以自定义$/,改变行结束符。比如$/="*_*",则此时遇到"*_*"才作为一行结束。python中有这种功能吗?
...

如果文件不大的话,用read() 把文件内容全读到某个变量,再用'*_*'来split

[Copy to clipboard] [ - ]
CODE:
str = file.read()
lines = str.split('*_*')

测试:

[Copy to clipboard] [ - ]
CODE:
>>> str = '1*_*2*_*3\n*_*\n*_*'
>>> str.split('*_*')
['1', '2', '3\n', '\n', '']