鱼C论坛

 找回密码
 立即注册
查看: 2009|回复: 7

[已解决]关于python语义切割后,数据不能存储的问题

[复制链接]
发表于 2021-7-25 11:07:58 | 显示全部楼层 |阅读模式
10鱼币
index.png

如上图,为什么数据写不进去txt呢?求帮助!
最佳答案
2021-7-25 11:07:59
本帖最后由 阿奇_o 于 2021-7-25 15:09 编辑

如果你一定要 在同一个文件里 "又读又写",那么 就必须用 'r+'  模式
为什么? —— 因为
'r' 是 只读模式,只能读取,不能写入;  
'w' 是 只写模式(所以你在此模式下,调用.readlines()方法,就会报错 not readable );
'w+' 可以写,也可以读,但是 它会先清空!相当于你读不到原来的任何内容

所以,可以选择的就只有  'r+' 模式了,它不会清空原来的内容,可读可写,新写入的会 追加进去。
所以,可以这样写:
def read_write(file, mode):
    with open(file, mode, encoding='utf-8') as f:
        new_lines = [line.strip().replace('Emma', 'XXXX') for line in f.readlines()]  # 先读取和修改 
        f.seek(0)       # 回到起点
        f.truncate()  # 开始清空(开始向下移动指针并删除每一行 )
        f.write('\n'.join(new_lines))   # 写入修改后的内容
    
read_write('em.txt', 'r+')

最佳答案

查看完整内容

如果你一定要 在同一个文件里 "又读又写",那么 就必须用 'r+' 模式。 为什么? —— 因为 'r' 是 只读模式,只能读取,不能写入; 'w' 是 只写模式(所以你在此模式下,调用.readlines()方法,就会报错 not readable ); 'w+' 可以写,也可以读,但是 它会先清空!相当于你读不到原来的任何内容。 所以,可以选择的就只有 'r+' 模式了,它不会清空原来的内容,可读可写,新写入的会 追加进去。 所以,可以这样写: ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-25 11:07:59 | 显示全部楼层    本楼为最佳答案   
本帖最后由 阿奇_o 于 2021-7-25 15:09 编辑

如果你一定要 在同一个文件里 "又读又写",那么 就必须用 'r+'  模式
为什么? —— 因为
'r' 是 只读模式,只能读取,不能写入;  
'w' 是 只写模式(所以你在此模式下,调用.readlines()方法,就会报错 not readable );
'w+' 可以写,也可以读,但是 它会先清空!相当于你读不到原来的任何内容

所以,可以选择的就只有  'r+' 模式了,它不会清空原来的内容,可读可写,新写入的会 追加进去。
所以,可以这样写:
def read_write(file, mode):
    with open(file, mode, encoding='utf-8') as f:
        new_lines = [line.strip().replace('Emma', 'XXXX') for line in f.readlines()]  # 先读取和修改 
        f.seek(0)       # 回到起点
        f.truncate()  # 开始清空(开始向下移动指针并删除每一行 )
        f.write('\n'.join(new_lines))   # 写入修改后的内容
    
read_write('em.txt', 'r+')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-25 11:10:41 | 显示全部楼层
写入要用'w'
open(fiilename,'w')


.txt报错.txt.txt不报错
你的计算机是不是把文件后缀名给隐藏了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-25 11:13:37 | 显示全部楼层
代码里是r读取txt,写入得用w。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-25 11:15:13 | 显示全部楼层
逃兵 发表于 2021-7-25 11:10
写入要用'w'
open(fiilename,'w')


如果用“w”,就报错了:UnsuortedOperation: not readable

木有隐藏。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-25 11:19:03 | 显示全部楼层

                               
登录/注册后可看大图


这是用“w”写入的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-25 11:21:11 | 显示全部楼层
咋说呢
读写是w+(覆盖写)或者r+(指针在开头写)
你想实现啥
先分步写,逻辑理清楚再用推导式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-25 11:24:02 | 显示全部楼层
逃兵 发表于 2021-7-25 11:21
咋说呢
读写是w+(覆盖写)或者r+(指针在开头写)
你想实现啥

我现在有一个句子库,

想把句子里无意义的  “的、啊、之”  这类停词去掉

剩下的词存在txt里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 00:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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