Python的readline()和Java的Scanner类方法nextLine()有什么区别?
nextLine()查找下一行分隔符,该字符可能不是“\ n”,而是写在这里:
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()
Python readline()方法是否也这样做?这很重要,因为我的文件可能有其他行分隔符,但我需要专门查找换行符。
有什么想法吗?
答案 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}}将其拆分。