|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为了对文件操作有进一步的了解和运用,我把之前的‘wing.txt’文件修改了一下,每一行都赋予了主语,分别是李雷和韩梅梅的交叉演唱。
这里,我想通过之前的split()函数,把文件中的主语和演唱内容分开,并加入一些东西
首先,对于split()BIF来说,其返回值是一个字符串列表,可以将其赋值到一个目标标识符列表
- >>> string = 'they say : we do not talk any more'
- >>> (role,content) = string.split(':')
- >>> print(role)
- they say
- >>> print(content)
- we do not talk any more
复制代码
当我们需要得到split()切割完之后的数据,可以通过上面的多重赋值得到
现在来操作这个文件
- >>> data = open('wing.txt')
- >>> for each_line in data:
- (role,line_spoken) = each_line.split(':')
- print(role,end=' ')
- print('需要唱',end=' ')
- print(line_spoken,end=' ')
-
- 李雷 需要唱 同样的机场 不同世界
- 韩梅梅 需要唱 同样的咖啡 不同味觉
- 李雷 需要唱 同样的我 和我都少了一些
- 韩梅梅 需要唱 看飞机划过天空不 见了
- 李雷 需要唱 用你给我的翅膀飞
- 韩梅梅 需要唱 我懂这不是伤悲
- 李雷 需要唱 再高都不会累
- 韩梅梅 需要唱 我们都说好了
- 李雷 需要唱 用你给我的翅膀飞
- 韩梅梅 需要唱 我感觉己够安慰
- 李雷 需要唱 乌云也不再多
- Traceback (most recent call last):
- File "<pyshell#44>", line 2, in <module>
- (role,line_spoken) = each_line.split(':')
- ValueError: too many values to unpack (expected 2)
复制代码
通过for进行迭代访问,可以看到文件内的‘:’全变成了‘需要唱’,感觉还不错,但是为什么最后却是会报错了呢
打开文件我才发现,原来,我把两行东西放在一行了,导致有一行出现了两个‘:’,按道理来说这一行被切割后,就变成了三部分,但是我们却只有两个赋值,所以产生了矛盾,那应该怎么改呢。
通过之前学习的split()可以知道,对split来说,其括号内的参数是可控的,我们通过修改其参数,来使其对不该分开的数据不产生作用。
- >>> data = open('wing.txt')
- >>> for each_line in data:
- (role,line_spoken) = each_line.split(':',1)
- print(role,end=' ')
- print('需要唱',end=' ')
- print(line_spoken,end=' ')
-
- 李雷 需要唱 同样的机场 不同世界
- 韩梅梅 需要唱 同样的咖啡 不同味觉
- 李雷 需要唱 同样的我 和我都少了一些
- 韩梅梅 需要唱 看飞机划过天空不 见了
- 李雷 需要唱 用你给我的翅膀飞
- 韩梅梅 需要唱 我懂这不是伤悲
- 李雷 需要唱 再高都不会累
- 韩梅梅 需要唱 我们都说好了
- 李雷 需要唱 用你给我的翅膀飞
- 韩梅梅 需要唱 我感觉己够安慰
- 李雷 需要唱 乌云也不再多
- 韩梅梅 需要唱 我们也不为谁掉眼泪,李雷:空气中藏著 你的香味
- 韩梅梅 需要唱 回忆里躲著 你的眼泪
- 李雷 需要唱 最后拥抱的温暖 还有一些
- 韩梅梅 需要唱 我拖著行李往前一 直走
- 李雷 需要唱 用你给我的翅膀飞
- 韩梅梅 需要唱 我懂这不是伤悲
- 李雷 需要唱 再高都不会累
- 韩梅梅 需要唱 我们都说好了
- 李雷 需要唱 用你给我的翅膀飞
- 韩梅梅 需要唱 我感觉己够安慰
- 李雷 需要唱 乌云也不再多
- 韩梅梅 需要唱 我们也不为谁掉眼泪
复制代码
这里可以看到对split()进行参数控制,刚才的文件操作完全没有问题了。
|
评分
-
查看全部评分
|