在每个逗号(例如,导入文件1,文件2,文件3)之后放置空格

真正挣扎的东西应该是非常基本的。我正在寻找\ n没有倒数\ r的实例(即\ r \ n好x \ n不好并且会)。


我很欣赏这是因为python 2对rb的管理方式不同,但无法确定python 3中识别\ r的等效功能或方式。


import re

import sys

import time

with open('4 - raw.txt', 'rb') as content_file:

    content = content_file.read()


newLinePos = [m.start() for m in re.finditer('\n', content)]


for line in newLinePos:

    if (content[line-1]) != '\r':

        print (repr(content[line-20:line]))


print ("end")

time.sleep(1000)


临摹微笑
浏览 152回答 2
2回答

智慧大石

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)]

qq_笑_17

如果你想找到换行/换行的位置(\n)不是一个回车前面的字符(\r),您可以使用一个负 回顾后发 断言正则表达式。>>> lines = ['foo', 'ba\nr', 'baz', 'quux']>>> content = '\r\n'.join(lines).encode('utf-8')>>> contentb'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文档。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python