yuchen99 发表于 2020-2-25 13:15:47

0基础课后题,29课04:\%这里为什么不换行会报错

这一段,如果\%()这里不换行为什么会报错

                decide = input('\n文件 %s 中共有%s个【%s】\n您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:'\
                %(file_name,count,rep_word,rep_word,new_word))
题目:编写一个程序,实现全部替换功能
完整代码如下
def file_replace(file_name,rep_word,new_word):
        with open(file_name) as f_read:
               
                content = []
                count = 0
               
                for eachline in f_read:
                        if rep_word in eachline:
                                cout = eachline.count(rep_word)
                                eachline = eachline.replace(rep_word,new_word)
                        content.append(eachline)
                       
                decide = input('\n文件 %s 中共有%s个【%s】\n您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:'\
                %(file_name,count,rep_word,rep_word,new_word))

                #这里\%不换行也会报错,原因待查
                if decide in ['YES','Yes','yes']:
                        f_write = open(file_name,'w')
                        f_write.writelines(content)
                        f_write.close()
               
       
file_name = input('请输入文件名:')
rep_word = input('请输入需要替换的单词或字符:')
new_word = input('请输入新的单词或字符:')
file_replace(file_name,rep_word,new_word)

       
       

qiuyouzhi 发表于 2020-2-25 13:17:38

本帖最后由 qiuyouzhi 于 2020-2-25 13:19 编辑

你要是不想换行的话,把\去掉
因为\是一个特殊字符,可以去掉某些特殊字符的能力,\和%在一起,%就没有特殊能力了,
Python就不知道这个%有什么用了(还在字符串的外面),所以就会报错

Hoiste 发表于 2020-2-25 13:50:08

\符号在作为Python中的转义字符会把后面的字符进行转义,也就是\%的话会让%失去作用从而使得前面的%s没有对应的参数。
另外,如果\在一行的末尾,则代表这一行代码还没有写完,转入下一行续写,这样的话下面的%就没有失去作用,所以不会报错
页: [1]
查看完整版本: 0基础课后题,29课04:\%这里为什么不换行会报错