为什么在python字典中的每个值附加一个`\ n`?

时间:2017-05-21 15:58:10

标签: python dictionary

我的代码是:

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

1 个答案:

答案 0 :(得分:3)

rstrip返回删除了尾随字符的字符串副本。

改变这个:

x.rstrip()

要:

x = x.rstrip()

修改

您在num,text = x.split(" ",1)中提供的第二个参数意味着:

  

如果给出maxsplit,则最多完成maxsplit拆分(因此,列表   最多只能有maxsplit + 1个元素)。如果未指定maxsplit   或-1,然后分割数量没有限制(所有可能的   分裂了。)

如果没有任何可以分割的内容,您将收到此错误。

你试过num,text = x.split(" ")吗?

或者至少有一次拆分是强制性的?