Python-在字节文件中替换正则表达式匹配项

时间:2018-11-14 01:03:10

标签: python regex python-3.x

努力自动清除文本文件以进行一些后续数据分析。我有一个文本到选项卡文件,需要删除\ t“文本实例(删除“但保留选项卡”)。

然后,我想删除\ n之前的字符 也不是\ r的实例。即\ r \ n可以,x \ n不能。我的第一部分正在工作,但第二部分没有任何帮助。我很欣赏可能有更好的方法来执行此操作,因为我正在编写然后以字节格式打开,只是因为我似乎无法在“ r”模式下检测到/ r。

import re
import sys
import time

originalFile = '14-09 - Copy.txt'
amendedFile = '14-09 - amended.txt'

with open(originalFile, 'r') as content_file:
    content = content_file.read()

content = content.replace('\t\"','\t')

with open(amendedFile,'w') as f:
    f.write(content)

with open(amendedFile, 'rb') as content_file:
    content = content_file.read()
content = re.sub(b"(?<!\r)\n","", content)

with open(amendedFile,'wb') as f:
    f.write(content)

print("Done")

为清晰起见,下面的python 2代码标识了我感兴趣的位置(我现在只是想自动删除它们)。即

\ r \ nText应该等于\ r \ nText

\ t \ nText应该等于\ tText

文字\ n文字应等于文字文字

import re
import sys
import time
with open('14-09 - Copy.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]))

一如既往的感谢!

1 个答案:

答案 0 :(得分:1)

您可能希望使用([^\r])\n作为样式,然后替换\1来保留字符。

所以您的电话应该是

content = re.sub(b"([^\r])\n",r"\1", content)