繁体   English   中英

替换文字python中的单词

[英]Replace word in text python

我有一本书的文本为txt格式。

如果specific_words_dict词典中包含一个单词,我想用word_1( catcat_1)替换该单词。 我写了这段代码,但是它不能代替文件中的单词。

for filename in os.listdir(path):
    with open(path+"/"+filename,'r+') as textfile:
        for line in textfile:
            for word in line.split():
                if(specific_words_dict.get(word) is not None):
                    textfile.write(line.replace(word,word+"_1"))

我究竟做错了什么?

不要同时读写文件。 它不会很好地结束。 我认为目前您正在追加文件(因此所有新行都将结束)。

如果文件不是太大 (可能不会),我会将整个内容读入ram。 然后,可以在重写整个文件之前编辑行列表。 效率不高,但很简单,而且有效。

for filename in os.listdir(path):
    with open(os.path.join(path, filename)) as fr:
        lines = fr.read().splitlines()
    for index, line in enumerate(lines):
        for word in line.split():
            if specific_words_dict.get(word) is not None:
                lines[index] = line.replace(word, word + "_1")
    with open(os.path.join(path, filename), 'w') as fw:
        fw.writelines(lines)

写入其他文件此外,您可以检查字典或文件中的单词是大写还是小写。 这也许就是为什么“替换”不起作用的原因。

for filename in os.listdir(path):
    with open(path+"/"+filename,'r+') as textfile, open(path+"/new_"+filename,'w') as textfile_new:
        for line in textfile:
            new_line = line
            for word in line.split():
                if(specific_words_dict.get(word) is not None):
                 new_line = new_line.replace(word,word+"_1")
            textfile_new.write(new_line)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM