v.ki 发表于 2021-5-3 14:27:08

python文本文件替换指定内容问题

本帖最后由 v.ki 于 2021-5-3 14:29 编辑

求助大佬,救救孩子:就是只改变特定的文本

唯一要求:只能改变部分文本,因为文件很大,其他内容只读不写入

°蓝鲤歌蓝 发表于 2021-5-3 14:27:09

v.ki 发表于 2021-5-3 15:32
okok ,你知不知道还有什么办法可以弄得不,我给网站弄一个敏感词过滤,然后有一个很大的字典,但是肯定有 ...

给这些敏感值设个初始的权值,用户反馈哪个词就让哪个词的权值减一,同时检查权值是否为 0 ,为 0 就从字典中把该值删除。

Py与C。。。 发表于 2021-5-3 14:44:28

既然你没发源码,那我只能猜了:
我的思路是:先读取旧文件的内容,再用replace替换,最后保存f = open('','r',encoding='utf-8')
f_n = open('text.txt','w',encoding='utf-8')
for line in f:
    if '内容' in line:
      line = line.replace('内容','替换后的内容')
    f_n.write(line)


v.ki 发表于 2021-5-3 14:58:49

Py与C。。。 发表于 2021-5-3 14:44
既然你没发源码,那我只能猜了:
我的思路是:先读取旧文件的内容,再用replace替换,最后保存

这样写w会覆盖所有的,我也这么想的替换,但是老是实现不了,你编一个txt文本,试试我试了很多种都没成功

hrp 发表于 2021-5-3 15:22:09

本帖最后由 hrp 于 2021-5-3 15:24 编辑

如果要替换的内容长度与原内容长度不一致,实现还是挺麻烦的。

按你的想法,对文件部分内容进行替换,但不全部重新写入,只写入部分内容,然后保存,是难以实现的,除非能实现更底层的磁盘操作,或者使用有此功能的库。

对于超大文件的内容更新,一般的方法是分段读取,内容替换,以追加方式写入新文件。对于内容替换部分,因为是分段读取,可能只包含要替换内容的一部分,会导致漏过,所以还要费些事去处理。

以上为个人想法。

v.ki 发表于 2021-5-3 15:32:21

hrp 发表于 2021-5-3 15:22
如果要替换的内容长度与原内容长度不一致,实现还是挺麻烦的。

按你的想法,对文件部分内容进行替换,但 ...

okok ,你知不知道还有什么办法可以弄得不,我给网站弄一个敏感词过滤,然后有一个很大的字典,但是肯定有些词本来不应该过滤,然后接收用户反馈,删除掉不应该过滤的词,也不能手动删除,有什么实现的思路没

hrp 发表于 2021-5-3 15:41:00

v.ki 发表于 2021-5-3 15:32
okok ,你知不知道还有什么办法可以弄得不,我给网站弄一个敏感词过滤,然后有一个很大的字典,但是肯定有 ...

内存够不够大,够大就直接对它进行反序列化,让后按字典方法操作,最后再序列化,省事。

阿奇_o 发表于 2021-5-4 01:14:49

文件太大,那就切分若干个足够小的。

或许,可以考虑用第三方模块 filesplit

或 自己代码实现切分。

v.ki 发表于 2021-5-5 22:56:45

°蓝鲤歌蓝 发表于 2021-5-5 13:35
给这些敏感值设个初始的权值,用户反馈哪个词就让哪个词的权值减一,同时检查权值是否为 0 ,为 0 就从 ...

{:5_102:}可以可以,非常不错的思路
页: [1]
查看完整版本: python文本文件替换指定内容问题