鱼C论坛

 找回密码
 立即注册
查看: 2784|回复: 8

[已解决]python文本文件替换指定内容问题

[复制链接]
发表于 2021-5-3 14:27:08 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 v.ki 于 2021-5-3 14:29 编辑

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

唯一要求:只能改变部分文本,因为文件很大,其他内容只读不写入
最佳答案
2021-5-3 14:27:09
v.ki 发表于 2021-5-3 15:32
okok ,你知不知道还有什么办法可以弄得不,我给网站弄一个敏感词过滤,然后有一个很大的字典,但是肯定有 ...


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

最佳答案

查看完整内容

给这些敏感值设个初始的权值,用户反馈哪个词就让哪个词的权值减一,同时检查权值是否为 0 ,为 0 就从字典中把该值删除。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-3 14:27:09 | 显示全部楼层    本楼为最佳答案   
v.ki 发表于 2021-5-3 15:32
okok ,你知不知道还有什么办法可以弄得不,我给网站弄一个敏感词过滤,然后有一个很大的字典,但是肯定有 ...


给这些敏感值设个初始的权值,用户反馈哪个词就让哪个词的权值减一,同时检查权值是否为 0 ,为 0 就从字典中把该值删除。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-3 14:44:28 | 显示全部楼层
既然你没发源码,那我只能猜了:
我的思路是:先读取旧文件的内容,再用replace替换,最后保存
  1. f = open('','r',encoding='utf-8')
  2. f_n = open('text.txt','w',encoding='utf-8')
  3. for line in f:
  4.     if '内容' in line:
  5.         line = line.replace('内容','替换后的内容')
  6.     f_n.write(line)


复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这样写w会覆盖所有的,我也这么想的替换,但是老是实现不了,你编一个txt文本,试试我试了很多种都没成功
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-3 15:22:09 From FishC Mobile | 显示全部楼层
本帖最后由 hrp 于 2021-5-3 15:24 编辑

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

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

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

以上为个人想法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-3 15:32:21 | 显示全部楼层
hrp 发表于 2021-5-3 15:22
如果要替换的内容长度与原内容长度不一致,实现还是挺麻烦的。

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

okok ,你知不知道还有什么办法可以弄得不,我给网站弄一个敏感词过滤,然后有一个很大的字典,但是肯定有些词本来不应该过滤,然后接收用户反馈,删除掉不应该过滤的词,也不能手动删除,有什么实现的思路没
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

内存够不够大,够大就直接对它进行反序列化,让后按字典方法操作,最后再序列化,省事。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-4 01:14:49 | 显示全部楼层
文件太大,那就切分若干个足够小的。

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

或 自己代码实现切分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

可以可以,非常不错的思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 21:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表