cari

Rumah  >  Soal Jawab  >  teks badan

python - 运行成功,但是没相应的文件生成

       def save_file(boy,girl,count):
            file_name_boy = 'boy' + str(count) + '.txt'
            file_name_girl = 'girl' + str(count) + '.txt'
        
            boy_file = open(file_name_boy, 'w')
            girl_file = open(file_name_girl, 'w')
        
            boy_file.writelines(boy)
            girl_file.writelines(girl)
            boy_file.close()
            girl_file.close()            #把两人的对话分别放到命名不同的文件里
        def split_file(file_name):
            f = open('E:/test/dialogue.txt')
            boy=[]
            girl=[]
            count=1
            for each_line in f:
                if each_line[:6] != '======':
                    (role,line_spoken) = each_line.split(':', 1)   #每行按照:分割成1+1个子字符串,分别赋值给=前面的对象
                    if role == '小甲鱼':
                        boy.append(line_spoken)
                    if role == '小客服':
                        girl.append(line_spoken)
                else:
                    save_file(boy,girl,count)
                    boy = []
                    girl = []
                    count += 1
            save_file(boy,girl,count)
            f.close()
        split_file('E:/test/dialogue.txt')
E:\Python\python.exe "E:/PyCharm 2016.3.2/testest/abc/filelearn_01.py"

Process finished with exit code 0

http://edu.csdn.net/course/de... 是这个视频里的

大家讲道理大家讲道理2881 hari yang lalu891

membalas semua(4)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-18 10:20:13

    Kata kunci carian telah berjaya ditemui dalam persekitaran kerja


    Selain itu, 'e:test/dialogue.txt' digunakan sebagai bekas//, yang terakhir boleh menjadi//atau atau/atau apabila bekas/; , yang terakhir hanya boleh digunakan secara bersendirian.


    Jika anda berminat, anda boleh mencubanya dan beritahu saya mengapa

    balas
    0
  • PHPz

    PHPz2017-04-18 10:20:13

    Mesej ralat tidak disiarkan dengan baik Nampaknya ralat ini disebabkan oleh kod ini (peranan, line_spoken) = each_line.split(':', 1)
    Apabila pembolehubah each_line tidak mengandungi:, an ralat akan berlaku

    balas
    0
  • 阿神

    阿神2017-04-18 10:20:13

    Isu pengekodan akan memberi impak yang lebih besar dalam python2, jadi beri perhatian khusus

    1. Pengekodan lalai semasa menyimpan dalam Notepad di bawah Windows ialah GBK, manakala python2 memprosesnya mengikut unikod, jadi apabila membuka fail, disyorkan untuk menukar pengekodan kepada unikod terlebih dahulu untuk mengelakkan lebih banyak masalah;

    2. Selain itu, aksara baris baru dalam Notepad ialah "n". watak baris baru

    3. Kemudian terdapat masalah titik bertindih Punca ralat ialah kaedah split tidak dapat mencari titik bertindih yang diberikan oleh kod anda dalam rentetan each_line. Titik bertindih yang anda berikan ialah bertindih dalam negeri Inggeris, manakala bertindih dalam fail ialah bertindih dalam negeri Cina. Tetapi jika anda menukarnya secara langsung kepada kolon Cina, ia juga perlu disatukan ke dalam kolon Cina rentetan unicode;
    4. Langkah seterusnya ialah kes perbandingan peranan Cina == 'Penyu Kecil' Anda masih perlu memberitahu python bahawa anda menggunakan rentetan unicode, supaya anda boleh melakukan perbandingan dengan agak tepat.

    5. def split_file(file_name):
          f = open('E:/test/dialogue.txt')
          boy=[]
          girl=[]
          count=1
          for each_line in f:
              each_line = each_line.strip().decode('gbk') # strip()方法用来去掉"\n";decode()方法用来把编码从gbk解码到unicode
              if each_line[:6] != '======':
                  # (role,line_spoken) = each_line.split(':', 1)   #每行按照:分割成1+1个子字符串,分别赋值给=前面的对象
                  (role,line_spoken) = each_line.split(u':', 1)   #注意这里的冒号是中文的冒号,u是告诉python这是个unicode的字符串
                  # if role == '小甲鱼':
                  if role == u'小甲鱼':
                      boy.append(line_spoken)
                  # if role == '小客服':
                  if role == u'小客服':
                      girl.append(line_spoken)
              else:
                  save_file(boy,girl,count)
                  boy = []
                  girl = []
                  count += 1
          save_file(boy,girl,count)
          f.close()

      balas
      0
  • 高洛峰

    高洛峰2017-04-18 10:20:13

    Saya rasa ini soal lebar penuh atau separuh lebar.
    Tetapi kaedah anda tidak sesuai untuk toleransi kesalahan.
    Cadangan saya ialah:

    split_result = each_line.split(':', 1)
    if len(split_result) < 2:
        raise RuntimeError()
    (role,line_spoken) = (split_result[0], split_result[1])

    balas
    0
  • Batalbalas