鱼C论坛

 找回密码
 立即注册
查看: 1766|回复: 4

[已解决]text_after[:-1]和text_after有什么区别啊,-1不就是指的是索引值的最后一个吗

[复制链接]
发表于 2020-8-19 17:01:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问小甲鱼第35课第三题的答案里,if text!=text_after[:-1]:#textbox的返回值会追加一个换行符。这里的text_after[:-1]和text_after有什么区别啊,-1不就是指的是索引值的最后一个吗


import easygui as g
import os

file_path=g.fileopenbox(default='*.txt')

with open(file_path) as old_file:
    title=os.path.basename(file_path)  #去掉目录路径,单独返回文件名
    msg='文件【%s】的内容如下:' % title
    text=old_file.read()
    text_after=g.textbox(msg,title,text)

if text!=text_after[:-1]:#textbox的返回值会追加一个换行符
    choice=g.buttonbox('检测到文件内容发生了变化,请选择以下操作','警告',('覆盖保存','放弃保存','另存为'))
    if choice=='覆盖保存':
        with open(file_path,'w') as old_file:
            old_file.write(text_after[:-1])
    if choice=='放弃保存':
        pass
    if choice=='另存为':
        another_path=g.filesavebox(default='.txt')
        if os.path.splitext(another_path)[1]!='.txt': #分离文件名和扩展名
            another_path+='.txt'
        with open(another_path,'w') as new_file:
            new_file.write(text_after[:-1])
最佳答案
2020-8-19 17:02:09
本帖最后由 zltzlt 于 2020-8-19 17:03 编辑

text_after[-1] 确实是最后一个字符,但切片是不包含结束位置的,也就是 text_after[:-1] 其实是从 text_after 第一个字符截取到 text_after 倒数第二个字符

但现在新版的 EasyGUI 已经不会追加换行符了,直接使用 text_after 就行,不用 text_after[:-1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-19 17:02:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zltzlt 于 2020-8-19 17:03 编辑

text_after[-1] 确实是最后一个字符,但切片是不包含结束位置的,也就是 text_after[:-1] 其实是从 text_after 第一个字符截取到 text_after 倒数第二个字符

但现在新版的 EasyGUI 已经不会追加换行符了,直接使用 text_after 就行,不用 text_after[:-1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 17:05:53 | 显示全部楼层
zltzlt 发表于 2020-8-19 17:02
-1 确实是最后一个字符,但切片是不包含结束位置的,也就是 text_after[:-1] 其实是从 text_after 第一个字 ...

好的谢谢,还有一点我不太懂,他这个text_after里边的内容除了结尾比text多一个结束符外,自己不修改的话没有不同的了吧,为什么我执行代码,两者也总是会不一样,要我覆盖保存或者另存之类的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-19 17:06:17 | 显示全部楼层
chong0918 发表于 2020-8-19 17:05
好的谢谢,还有一点我不太懂,他这个text_after里边的内容除了结尾比text多一个结束符外,自己不修改的话 ...

现在新版的 EasyGUI 已经不会追加换行符了,直接使用 text_after 就行,不用 text_after[:-1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-19 17:09:07 | 显示全部楼层
zltzlt 发表于 2020-8-19 17:06
现在新版的 EasyGUI 已经不会追加换行符了,直接使用 text_after 就行,不用 text_after[:-1]

我刚改完后解决了,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 13:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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