吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2010|回复: 18
收起左侧

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

[复制链接]
世界上只有dog雄 发表于 2020-2-7 21:08
本帖最后由 世界上只有dog雄 于 2020-2-7 22:19 编辑

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

代码是:
[Python] 纯文本查看 复制代码
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)



完整代码:
[Python] 纯文本查看 复制代码
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()




附件是读取的文件:
abcd.txt (2.97 KB, 下载次数: 2)


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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

你没发现判断那里少了一个=吗?
[Python] 纯文本查看 复制代码
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
luanshils 发表于 2020-2-7 21:22
namedlxd 发表于 2020-2-7 21:29
解包的时候错了 each_line.split(':',1)返回一个值,你用俩变量接收
 楼主| 世界上只有dog雄 发表于 2020-2-7 21:41
德古拉伯 发表于 2020-2-7 21:17
你没发现判断那里少了一个=吗?
[mw_shl_code=python,true]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 读文件尤其注意编码
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 20:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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