python readline()和Java的Scanner类nextLine()之间的区别

时间:2014-04-06 02:21:40

标签: java python

Python的readline()和Java的Scanner类方法nextLine()有什么区别?

nextLine()查找下一行分隔符,该字符可能不是“\ n”,而是写在这里:

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()

Python readline()方法是否也这样做?这很重要,因为我的文件可能有其他行分隔符,但我需要专门查找换行符。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你应该自己测试一下。

我使用f.readline()在控制台上对其进行了测试,直到\n为止,即使行中有\r也是如此。

>>> f.readline()
'This is a test\n'
>>> f.readline()
'Second line\rwith char\n'
>>> f.readline()
'Third line' 

注意:如果您在python脚本上简单地打印读取行,就会发生一些奇怪的事情。但是,如果您使用repr(str),则会看到所有\n\r

答案 1 :(得分:1)

首先,您要将苹果与橙子进行比较。 Scanner 是Java文件对象的Java等价物。 BufferedReader 等效,事实上,如果您查看BufferedReader方法的'\n'文档:

  

读取一行文字。一条线被认为是任何一条线终止的   换行符('\r'),回车符('\n')或回车符   然后立即换行。

Python也nextLine

  

一种解释文本流的方式,其中包括以下所有内容   被认为是一行:Unix行尾约定'\r\n',   Windows约定'\r'和旧的Macintosh约定str.splitlines()。   参见PEP 278和PEP 3116,以及Scanner   额外使用。


AFAIK python不提供与Java scan等效的 public 。但是 是一个(未记录的)this,它可以用来实现你想要的。 你只需提供一个"词典"创建实例然后调用re.split方法。

实现所需内容的最简单方法可能是以块的形式读取文件,然后使用{{1}}将其拆分。