我的代码是:
quiz = {}
quiz["questions"]={}
templist = []
def checkint(i):
try:
int(i)
return True
except ValueError:
return False
with open("sample",'r') as f:
for x in f:
x.rstrip()
num,text = x.split(" ",1)
print(text)
num = num[:-1]
if checkint(num):
quiz["questions"][num] = {}
quiz["questions"][num]["question"] = text
templist.append(num)
else:
qn = templist.pop()
quiz["questions"][qn][num] = text
templist.append(qn)
示例文件是:
1. Who is the sower in the parable of wheat and tares?
a. Jesus
b. Peter
c. Angels
d. Satan
当我打印字典测验时,输出在每个值的末尾都包含换行符\n
。
{'questions':{'1':{'a':'Jesus \ n','b':'Peter \ n','c': '天使\ n','d':'撒旦\ n','问题':'谁是播种者 小麦和稗子的比喻?\ n'},'2':{'问题':'\ n'}}}
为什么会这样?我该怎么做才能摆脱\n
?
答案 0 :(得分:3)
rstrip
返回删除了尾随字符的字符串副本。
改变这个:
x.rstrip()
要:
x = x.rstrip()
修改强>
您在num,text = x.split(" ",1)
中提供的第二个参数意味着:
如果给出maxsplit,则最多完成maxsplit拆分(因此,列表 最多只能有maxsplit + 1个元素)。如果未指定maxsplit 或-1,然后分割数量没有限制(所有可能的 分裂了。)
如果没有任何可以分割的内容,您将收到此错误。
你试过num,text = x.split(" ")
吗?
或者至少有一次拆分是强制性的?