鱼C论坛

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

[已解决]文件读取不了求大神解决

[复制链接]
发表于 2016-12-3 23:33:19 | 显示全部楼层 |阅读模式

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

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

x
f = open('E:\\xq1.txt')
boy =[]
girl = []
count = 1         
for each_line in f:
    if each_line[:6] != '======':
         (role, line_spoken) = each_line.split(':', 0)
         if role == '小强':
             boy.append(line_spoken)
         if role == '小客服':
             girl.append(line_spoken)
    else:
         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()
         
         boy =[]
         girl = []
         count += 1


f.close()
按照视频敲得,到我这里就报错了求大神
Traceback (most recent call last):
  File "E:/文件读取程序.py", line 7, in <module>
    (role, line_spoken) = each_line.split(':', 0)
ValueError: not enough values to unpack (expected 2, got 1)
上面是错误信息。
最佳答案
2016-12-4 10:35:01
这个问题在论坛中反复提问回答过很多次。
问题不是文件读不了。也不是程序有Bug,而是你的.txt文件的内容。程序中读到一行文本,需要用":"分割为两部分,而当文本中不是英文冒号,而是中文冒号":"时,找不到":"则无法分割。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-4 10:35:01 | 显示全部楼层    本楼为最佳答案   
这个问题在论坛中反复提问回答过很多次。
问题不是文件读不了。也不是程序有Bug,而是你的.txt文件的内容。程序中读到一行文本,需要用":"分割为两部分,而当文本中不是英文冒号,而是中文冒号":"时,找不到":"则无法分割。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-12-4 11:46:08 | 显示全部楼层
冬雪雪冬 发表于 2016-12-4 10:35
这个问题在论坛中反复提问回答过很多次。
问题不是文件读不了。也不是程序有Bug,而是你的.txt文件的内容 ...

谢谢,今天早些时候我论坛看到很多人提问过,确实是符号问题,谢谢你的回答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-14 19:50:45 | 显示全部楼层
冬雪雪冬 发表于 2016-12-4 10:35
这个问题在论坛中反复提问回答过很多次。
问题不是文件读不了。也不是程序有Bug,而是你的.txt文件的内容 ...

版主啊,我一开始是没注意两者的中英文问题,后来到论坛里搜相关问题,之后先都改成了中文,还是报相同的错误,又都改成了英文,还是一模一样的错误,为啥我这里解决不了这个问题呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-14 19:55:10 | 显示全部楼层
笑梦灵 发表于 2017-1-14 19:50
版主啊,我一开始是没注意两者的中英文问题,后来到论坛里搜相关问题,之后先都改成了中文,还是报相同的 ...

你把你的程序和数据文件发上来我看看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-14 20:00:48 | 显示全部楼层
冬雪雪冬 发表于 2017-1-14 19:55
你把你的程序和数据文件发上来我看看。
f = open('E:\\record.txt')

boy = []
girl = []
count = 1

for each_line in f:
    if each_line[:6] != '======':
        (role,line_spoken) = each_line.split(':',1)
        if role == '小甲鱼':
            boy.append(line_spoken)
        if role == '小客服':
            girl.append(line_spoken)
    else:
        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()

        boy = []
        girl = []
        count += 1

f.close()

那个record文件在附件里,麻烦版主帮忙看一下了,谢谢了

record.txt

1.09 KB, 下载次数: 3

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-14 20:27:35 | 显示全部楼层
笑梦灵 发表于 2017-1-14 20:00
那个record文件在附件里,麻烦版主帮忙看一下了,谢谢了

我的调试方法:
在(role,line_spoken) = each_line.split(':',1)的前面加上一行 print(each_line)
这样就可以看到读取到什么地方出错了。
  1. 小甲鱼:那正常,哪家公司?

  2. 小客服:他没说啊。

  3. 小甲鱼:哦

  4. 小客服:老大,为什么我工资那么低啊??

  5. 是时候涨涨工资了!!

  6. Traceback (most recent call last):
  7.   File "D:\py\4.py", line 10, in <module>
  8.     (role,line_spoken) = each_line.split(':',1)
  9. ValueError: not enough values to unpack (expected 2, got 1)
复制代码


发现是在读到 “是时候涨涨工资了!!”出错的,看一下这行没有“:”。把这行与上一行合成一行就好了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-14 22:33:26 | 显示全部楼层
冬雪雪冬 发表于 2017-1-14 20:27
我的调试方法:
在(role,line_spoken) = each_line.split(':',1)的前面加上一行 print(each_line)
这样 ...

呃,真的是啊,谢谢版主,它这里是因为没有冒号无法进行分割吧
学到了Python的调试方法,好开心支持鱼c,支持冬雪雪冬版主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-11 03:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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