世界上只有dog雄 发表于 2020-2-7 21:08

【已解决】python3.8字符串split分割方法怎么报错?

本帖最后由 世界上只有dog雄 于 2020-2-7 22:19 编辑

我是按照小甲鱼教程学习的,按照他代码打完后,他的可以运行,我的为什么不能运行呢?新手不知道怎么查这个错误。请各位舞友帮忙一下!谢谢!他可能用的是3.5之下的版本。

代码是:for each_line in f:

    #对获取的这一行进行怕判断
    if each_line[:6] != '=====':   #判断前六个是否等于'== '

      #如果不是等号的我们这里进行字符串分割操作

      ##接下里可以使用字符串方法split(sep=None,maxsplit=-1)来进行分割操作。
      (role,line_spoken) = each_line.split(':',1)

      #判断role是谁说的话,如果是小甲鱼,就放到boy列表里
      if role == '小甲鱼':
            boy.append(line_spoken)
      #判断role如果是小客服,就放到girl列表里
      if role == '小客服':
            girl.append(line_spoken)


报错为:
line 29, in <module>
    (role,line_spoken) = each_line.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)


完整代码:
f = open('d:/abcd.txt')

##接下来就要把想要的内容存放在一个单独的列表里。比如定义一个列表存放小甲鱼的对话,在定义一个列表存放小客服的对话

#存放小甲鱼的对话
boy = []

#存放小客服
girl = []

###需要一个计算器
count = 1
#
#每次获取他的一行
for each_line in f:

    #对获取的这一行进行怕判断
    if each_line[:6] != '======':   #判断前六个是否等于'== '

      #如果不是等号的我们这里进行字符串分割操作

      ##接下里可以使用字符串方法split(sep=None,maxsplit=-1)来进行分割操作。
      (role,line_spoken) = each_line.split(':',1)

      #判断role是谁说的话,如果是小甲鱼,就放到boy列表里
      if role == '小甲鱼':
            boy.append(line_spoken)
      #判断role如果是小客服,就放到girl列表里
      if role == '小客服':
            girl.append(line_spoken)



      """
      role:代表角色,比如小甲鱼
      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和girl列表里了
      #如果要把一个列表里有很多字符串利用序列的方式写入文件。那么该用哪个函数?.writelines(sep)正好符合条件
      boy_file.writelines(boy)

      girl_file.writelines(girl)

      #要记得把文件关闭,不然就是没保存的状态
      boy_file.close()

      girl_file.close()

      #接下里还需要对列表初始化,和计数的加1
      boy = []

      gril = []

      count += 1
      """
      如果是等号的话进行文件的分别保存操作。就是当遇到'======'的时候就需要分别保存了。
      """
f.close()



附件是读取的文件:



德古拉伯 发表于 2020-2-7 21:17

本帖最后由 德古拉伯 于 2020-2-7 21:24 编辑

你没发现判断那里少了一个=吗?
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)

哈哈衬 发表于 2020-2-7 21:19

请问出错的时候的each_line的值是什么?

luanshils 发表于 2020-2-7 21:22

能不能截图29行的代码

namedlxd 发表于 2020-2-7 21:29

解包的时候错了 each_line.split(':',1)返回一个值,你用俩变量接收

世界上只有dog雄 发表于 2020-2-7 21:41

德古拉伯 发表于 2020-2-7 21:17
你没发现判断那里少了一个=吗?
for each_line in f :
    if each_line[:6] ! ...

改了还一样的报错

世界上只有dog雄 发表于 2020-2-7 21:42

namedlxd 发表于 2020-2-7 21:29
解包的时候错了 each_line.split(':',1)返回一个值,你用俩变量接收

小甲鱼视频是这样教的,所以我就有点犯难

世界上只有dog雄 发表于 2020-2-7 21:43

luanshils 发表于 2020-2-7 21:22
能不能截图29行的代码

我把完整代码贴上啦

nstar1221 发表于 2020-2-7 21:48

读取那个文件的内容也发一下

qqwww520kk 发表于 2020-2-7 21:51

https://blog.csdn.net/Saltwater_Room/article/details/99869184
善用百度
BTW: !=是不等于 并没少=
BBTW: python 读文件尤其注意编码
页: [1] 2
查看完整版本: 【已解决】python3.8字符串split分割方法怎么报错?