Python清洁d

2024-09-28 21:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个大的文本文件(大约3GB)中删除不需要的字符。我正在尝试删除文件中不需要的前后斜杠。我想在单词之间保留颚化符,它充当分隔符。文件的格式如下:

Cornet~Chris Tyle
Cornet\~Warren Vache
Cornet~Roger Webster
Cornet~\Grimethorpe Coll//iery Band
Cornet/~Daniel Rollston
Cornet~Murley Silver Band
Chocolate~Chocolate liquor
Chocolate~Theobroma cacao
Chocolate~Meso/america

所以在上面的例子中,我想删除所有的反斜杠/正斜杠,这样单词就可读了(同时保留了颚化符)。我会为此使用Python正则表达式吗?另一种可能是删除包含斜线的行,但我想把它作为最后的手段。在

**编辑:抱歉忘了提一件事!有些线条是这样的:

^{pr2}$

除了删除正斜杠和反斜杠之外,我还必须删除所有在颚化符之前或之后为null的行**

谢谢你的帮助!在


Tags: 文件band格式字符单词chris文本文件分隔符
3条回答

像这样简单的事情就可以了吗?(我相信for line in f是一个生成器。不管怎样,它一次只读取一行)

with open(filename, "r") as f: 
     for line in f: 
         line = line.replace("/", "") 
         line = line.replace("\\", "")

更新(OP还希望“删除所有在颚化符“之前或之后为空的行”

这将跳过颚化符前面有空格的行,并替换其余行中的正斜杠和反斜杠:

^{pr2}$

注:如果你真正想要的只是保持所有行的格式为“word+tilde+word”,那么删除斜杠并丢弃其他所有内容,声明这样更容易理解。在

简单,只需使用str.replace()。在

注意双\\,它不是替换双反斜杠,而是一个反斜杠在转义另一个反斜杠

代码:

def clean():
    with open('example.txt', 'r') as f:
        outputs = []
        for line in f:
            output = line.replace('/', '')
            output = output.replace('\\', '')
            output = output.replace('\n', '')
            outputs.append(output)
    return outputs

print(clean())

输出:

^{pr2}$

尝试:

import re

rx = re.compile(ur'[/\\]+', re.MULTILINE)

inFile = "input.txt"
outFile = "output.txt"

with open(inFile, 'r') as f_in:
    with open(outFile,'w') as f_out:
        for line in f_in:
            cleanLine = re.sub(rx, '', line).strip()
            if cleanLine.startswith('~') or cleanLine.endswith('~'):
                continue
            f_out.write(cleanLine + '\n')

这段代码正在从输入文件中删除\ /和以tilda~开头或结尾的行,并编写一个干净的输出文件。在

基于输入文本,它将发出

^{pr2}$

相关问题 更多 >