为什么老是报这样错呢,我觉得我参数给的没错啊
import pickledef save_file():
boy_file = open('boy_',str(count),'.txt','wb')
girl_file = open('girl_',str(count),'.txt','wb')
pickle.dump(boy,boy_file.pkl)
pickle.dump(girl,girl_file.pkl)
boy_file.close()
girl_file.close()
def split_file(file_name):
f = open(file_name)
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:2] == '===':
save_file(boy,girl,count)
boy = []
girl = []
count += 1
else:
(name,content) = each_line.split(':',1)
if name == '小甲鱼':
boy.append(content)
if name == '小客服':
girl.append(content)
save_file(boy,girl,count)
f.close()
split_file('record.txt')
我运行之后老是报这样的错{:10_266:}
试一下修改冒号
将英文版冒号修改为中文版冒号
import pickle
def save_file():
boy_file = open('boy_',str(count),'.txt','wb')
girl_file = open('girl_',str(count),'.txt','wb')
pickle.dump(boy,boy_file.pkl)
pickle.dump(girl,girl_file.pkl)
boy_file.close()
girl_file.close()
def split_file(file_name):
f = open(file_name)
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:2] == '===':
save_file(boy,girl,count)
boy = []
girl = []
count += 1
else:
(name,content) = each_line.split(':',1)
if name == '小甲鱼':
boy.append(content)
if name == '小客服':
girl.append(content)
save_file(boy,girl,count)
f.close()
split_file('record.txt') 逃兵 发表于 2021-2-25 16:09
试一下修改冒号
将英文版冒号修改为中文版冒号
还是报错{:10_266:}而且原来文件里的冒号是英文状态的冒号 你是不是有哪一行源文件不能被分割的,也就是不带有 :
因为split 期待获取两个,但是只获取到了一个,说明并没有被分割成功,按道理分割成功了是会传回两个的(因为你是写了 split(':',1)),但是只传回了一个
你看看是不是有换行什么的
(name,content) = each_line.split(':',1) 先改成 print(each_line.split(':')) 看看会 split 什么出来
后面的 if 判断先注释掉看看
因为你要把切割后的东西传入一个元组,但是应该是有什么没有被成功切割成两个的,如上图所示,就会出现这个问题
可以看看用 try except 去解决
try 切割传给元组 except ValueError 就跳过这个 Daniel_Zhang 发表于 2021-2-25 17:28
你是不是有哪一行源文件不能被分割的,也就是不带有 :
因为split 期待获取两个,但是只获取到了一个,说 ...
file:///C:/Users/%E7%BA%A2/Desktop/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202021-02-25%20180252.png
为什么他会把‘===’这行一起split? 如果each_line == '==='时不是不会进入else语句吗? 好奇怪 无枝为檄 发表于 2021-2-25 18:08
为什么他会把‘===’这行一起split? 如果each_line == '==='时不是不会进入else语句吗? 好奇怪
你可以把 if each_line[:2] == '===': 改成 if "===" in each_line
看看 === 是否在这一行中
没记错的话应该是左闭右开的
而且你这个特别局限,即使你改成了 if each_line[:3] == '===':
因为对应的分隔符的格式一定要是 === 不能是 ====或者其他的任意长度的 ==
要记住一点,用户不一定全都会按照你的想法去执行操作,所以 bug 很有可能一直存在,只是没有被发现{:10_269:} 无枝为檄 发表于 2021-2-25 18:08
为什么他会把‘===’这行一起split? 如果each_line == '==='时不是不会进入else语句吗? 好奇怪
另外,别使用你电脑路径上传图片,别人看不到的,你是vip,评论的时候最右侧有一个高级模式,去那里面插入图片
普通模式的只能插入互联网上的图片 Daniel_Zhang 发表于 2021-2-25 18:18
你可以把 if each_line[:2] == '===': 改成 if "===" in each_line
看看 === 是否在这一行中
成功了 谢谢! Daniel_Zhang 发表于 2021-2-25 18:19
另外,别使用你电脑路径上传图片,别人看不到的,你是vip,评论的时候最右侧有一个高级模式,去那里面插 ...
ok 谢谢提醒我刚进小甲鱼不久 还不太会用{:10_254:}
页:
[1]