真正为基本的东西而苦苦挣扎。我正在寻找\ n没有倒数\ r的实例(即\ r \ n很好x \ n不好并且会)。
我很欣赏这是因为python 2对rb的管理方式不同,但是无法确定python 3中识别\ r的等效功能或方式。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
this.setTurnScreenOn(true);
} else {
final Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
答案 0 :(得分:1)
如果您要查找换行符/换行符(\n
)字符的位置,而不要使用回车符(\r
),则可以使用负数 向后看 断言正则表达式。
>>> lines = ['foo', 'ba\nr', 'baz', 'quux']
>>> content = '\r\n'.join(lines).encode('utf-8')
>>> content
b'foo\r\nba\nr\r\nbaz\r\nquux'
>>> pattern = b'(?<!\r)\n'
>>> newLinePos = [m.start() for m in re.finditer(pattern, content)]
>>> newLinePos
[7]
>>> content[5:8]
b'ba\n'
有两件事要注意。
content
是bytes
实例;当您以“ rb”模式读取文件时,将获得字节。pattern
必须是字节实例,因为要搜索的序列是字节实例。(?<!\r)\n
)后面的字符前面没有\n
,则模式\r
匹配。有关完整说明,请参见re documentation。 答案 1 :(得分:1)
Python 3明确区分了原始字节字符串和utf-8字符串。 content[line-1]
返回一个数字,可能是0-255-字节,并且您正在尝试将其与字符串'\r'
进行匹配。我同意可以进行转换,但是Python是强类型的,因此无论整数表示什么字符,这都将始终失败。要获取与byte
相对应的\r
号,请使用:
(content[line-1]) != ord('\r')
,并类似地使用字节字符串生成迭代器:
newLinePos = [m.start() for m in re.finditer(b'\n', content)]