Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python readline()和Java';s Scanner类nextLine()_Java_Python - Fatal编程技术网

python readline()和Java';s Scanner类nextLine()

python readline()和Java';s Scanner类nextLine(),java,python,Java,Python,Python的readline()和Java的Scanner类方法nextLine()之间有什么区别 nextLine()查找下一行分隔符,该分隔符可能不是此处所写的“\n”: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine() Python readline()方法也这样做吗?这一点很重要,因为我的文件可能有其他行分隔符,但我需要特别查找新行字符 有什么想法吗?你应该自己测试一下 我已经在控制台上

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

nextLine()查找下一行分隔符,该分隔符可能不是此处所写的“\n”:

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

Python readline()方法也这样做吗?这一点很重要,因为我的文件可能有其他行分隔符,但我需要特别查找新行字符


有什么想法吗?

你应该自己测试一下

我已经在控制台上使用
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

首先你是在比较苹果和橙子
Scanner
不是python文件对象的Java等价物
BufferedReader
是等效的,事实上,如果您查看
BufferedReader
的方法文档:

读一行文字。一条线路被视为由任何一条线路终止 换行符(
'\n'
)、回车符(
'\r'
)或回车符 紧接着是换行符

Python也会:

一种解释文本流的方式,其中包含以下所有内容 被识别为行尾:Unix行尾约定
'\n'
, Windows惯例
'\r\n'
,以及旧的Macintosh惯例
'\r'
。 有关详细信息,请参见PEP 278和PEP 3116,以及
str.splitlines()
额外使用


AFAIK python不提供Java的
扫描器的公共等价物。但是有一个(未记录的)可以用来实现你想要的。
您只需在创建实例时提供一个“词典”,然后调用
scan
方法


可能最简单的实现方法是将文件分块读取,然后使用
re.split
将其拆分