为什么我得到错误-Single'}'在格式字符串中遇到

时间:2012-11-13 11:59:28

标签: python

我正在编写一些代码,看看打印出一个单词列表,我可以用字母'myLetters'字符串制作,但由于某种原因,我的格式化不起作用。它应该作为一个单词列表出现,它之间有多个空格,值和myLetters + 4的长度

def scrabbleWords(myLetters):
        letterPoints = {'a':1,'b':3,'c':3,'d':2, 'e':1,'f':4,'g':2,'h':4,\
    'i':1,'j':8,'k':5,'l':1,'m':3,'n':1,'o':1,'p':3,'q':10,'r':1,'s':1,\
    't':1,'u':1,'v':4,'w':4,'x':8,'y':4}
        wordList = createWordList('wordlist.txt')
        myWords = []
        for myWord in wordList:
            x = canWeMakeIt(myWord,myLetters)
            if x == True:
                myWords.append(myWord)


        pointWordList = []
        for myWord in myWords:
            t = getWordPoints(myWord,letterPoints)
            pointWordList.append((t,myWord))
        pointWordList.sort(reverse=True)


        lenx = str(len(myLetters)+4)
        for pointValue, myWord in pointWordList:
            x = '{:'+lenx+'}{}'.format(myWord,pointValue)
            print(x)

3 个答案:

答案 0 :(得分:4)

'{:'+lenx+'}{}'.format(myWord,pointValue)

解释为

'{:'     +     lenx     +     '}{}'.format(myWord,pointValue)

将其更改为:

'{1:{0}}{2}'.format(lenx, myWord, pointValue)

编辑:不要忘记将lenx更改为整数(或根本不将其转换为字符串):

lenx = len(myLetters) + 4

答案 1 :(得分:3)

问题在于'{:'+lenx+'}{}'.format(myWord,pointValue)表达式尝试将lenx+'}{}'.format(myWord,pointValue)添加到总和'{:'+lenx

这可以做我认为你想要的,并且在我看来更具可读性:

x = '{:{width}}{}'.format(myWord, pointValue, width=lenx)

编辑:另外,无论lenx是整数还是字符串值,这都有效。

答案 2 :(得分:0)

格式字符串中遇到的“单个'}”错误是由于我们正在查看一些代码,如果没有一些包围,这些代码无效。

你写了

'{:'+lenx+'}{}'.format(myWord,pointValue)

但可能意味着

('{:'+lenx+'}{}').format(myWord,pointValue)

而python的解释是:

'{:'+lenx+('}{}'.format(myWord,pointValue))