linkplusa
  • 1
  • 新人请关照

如何用python将txt文本中的中文逗号都转换为英文逗号?

f=open('data.txt','a+',encoding='utf-8')
for line in f:

line=line.replace(',',',')  
f.write(line)  

f.close()

这是我的错误代码。。请大佬赐教

阅读 1.1k
评论 2019-12-20 提问
    5 个回答

    replace(/\,/g,',')

    评论 赞赏 2019-12-21

      错误的原因在于文件读写的处理方式,应该先正确理解文件的打开模式。

      正确的做法是先以'r'模式读取全部文件内容,完成替换后再以'w'模式一次性写入。

      对于超大文件,可以先开临时文件,逐行处理写入完成后,在以临时文件替换目标文件。

      评论 赞赏 2019-12-23
        with open('file.txt', 'r+', encoding='utf-8') as fp:
            s = fp.read()
            fp.seek(0)
            fp.write(s.replace(',', ','))
        评论 赞赏 2019-12-29
          dodopy
          • 1.8k

          a+ 还是 r+ 都是可读写的,但是你得清楚两种模式打开文件时指向的位置, r+ 模式打开文件指向开头, a+ 模式打开文件指向结尾。

          with open('data.txt', 'r+', encoding='u8') as fp:  
              s = fp.read().replace(',', ',')  
              fp.seek(0)  
              fp.truncate()  
              fp.write(s)  

          或者

          with open('data.txt', 'a+', encoding='u8') as fp:  
              fp.seek(0)  
              s = fp.read().replace(',', ',')  
              fp.seek(0)  
              fp.truncate()  
              fp.write(s)

          当然文件比较大就不要一次性读到内存中了,按行迭代读写分离好点。

          评论 赞赏 1月14日
            f=open('data.txt','r',encoding='utf-8')
            new_txt = f.read().replace(',',',')
            f.close()
            
            f2=open('data2.txt','w',encoding='utf-8')
            new_txt = f2.write(new_txt)
            f2.close()

            读写不能同时进行,要分开操作,你那个for line in f说明你是一个刚学,而且学得很烂的新手。

            评论 赞赏 2019-12-25
              撰写回答

              登录后参与交流、获取后续更新提醒