求助《零基础入门学习Python》31讲课后习题里动动手那一题
题目要求把‘“record.txt”的文件里的文本按照不同人分为boy_X.txt和girl_X.txt,但是答案的写法是已经知道只有“小甲鱼”和“小客服”两个人。我想在这基础上,改成自动识别所有说话的人,并按照人的名字生成以人名开头的文件名,但我把下面代码运行后vs code没有告诉我哪里语句错了,就给了“NameError: name '小客服_1' is not defined”。
请大神帮忙看下我哪里错了{:10_266:}
我的record.txt放在‘E:\a’文件夹里
import os
path = r'E:\a'
os.chdir(path)
text = open('record.txt')
count = 1
mans = []
spokens = []
for each_line in text:
if each_line[:6] != '======':
man,spoken = each_line.split(':',1)
if man not in mans:
mans.append(man)
spokens.append()
else:
spokens.append(spoken)
else:
for i in range(len(mans)):
exec('man%d_file_name = %s_%d.txt' %(i,mans,count))
exec('man%d_file = open(man%d_file_name,%s)' %(i,i,'w'))
exec('man%d_file.writelines(spokens)' %i)
exec('man%d_file.close()' %i)
mans = []
spokens = []
count += 1
for i in range(len(mans)):
exec('man%d_file_name = %s_%d.txt' %(i,mans,count))
exec('man%d_file = open(man%d_file_name,%s)' %(i,i,'w'))
exec('man%d_file.writelines(spokens)' %i)
exec('man%d_file.close()' %i) 思路应该没什么问题 不过emmmexec('man%d_file_name = %s_%d.txt' %(i,mans,count))
exec('man%d_file = open(man%d_file_name,%s)' %(i,i,'w'))
exec('man%d_file.writelines(spokens)' %i)
exec('man%d_file.close()' %i)这几句可以这样用吗?没学过这种用法{:10_245:},感觉有语法错误 沐羽尘 发表于 2020-6-7 23:22
思路应该没什么问题 不过emmm这几句可以这样用吗?没学过这种用法,感觉有语法错误
我试过下面的代码,运用exec()和格式化能够成功完成var1 = 1的变量赋值,就按照这思路进行了操作。
jak = 1
exec('var%s = %d' %(jak, jak)) Nmbh 发表于 2020-6-8 11:04
我试过下面的代码,运用exec()和格式化能够成功完成var1 = 1的变量赋值,就按照这思路进行了操作。
你有没有想过,你给他赋值的类型是int还是str类型,能不能实现,如果只是试验一次是不够的,代码是需要多次调试的吧,就说一下这一条exec('man%d_file_name = %s_%d.txt' %(i,mans,count))肯定是会报错的,因为无法识别是什么类型的赋值,可以这么改exec(' man%d_file_name = "%s_%d.txt" ' %(i,mans,count)) #在里面加一个括号表示"%s_%d.txt"是str类型,这样才可以执行
看上去你的代码应该没什么大问题,可以善用vs code的分步调试,看看哪一步出错,改起来比较容易
还有你打开文件记得close一下,比如你的text = open('record.txt')文件就没看到有关闭{:10_256:} 沐羽尘 发表于 2020-6-8 11:44
你有没有想过,你给他赋值的类型是int还是str类型,能不能实现,如果只是试验一次是不够的,代码是需要多 ...
谢谢提醒,我分部测试下看看{:10_275:}
页:
[1]