格式化字典中键的输出

时间:2009-05-29 21:55:30

标签: python string dictionary python-3.x

我有一个字典,它存储一个字符串作为键,一个整数作为值。在我的输出中,我希望将键显示为不带括号或逗号的字符串。我该怎么做?

for f_name,f_loc in dict_func.items():
        print ('Function names:\n\n\t{0} -- {1} lines of code\n'.format(f_name, f_loc))

输出:

Enter the file name: test.txt
line = 'def count_loc(infile):'

There were 19 lines of code in "test.txt"

Function names:

    ('count_loc(infile)',) -- 15 lines of code

只是因为不清楚,我希望输出的最后一行显示为:

count_loc(infile) -- 15 lines of code

编辑

name = re.search(func_pattern, line).groups()
name = str(name)

在我的输出之前使用type(),我验证它仍然是一个字符串,但输出就像名字是一个元组时那样

4 个答案:

答案 0 :(得分:4)

我没有Python 3所以我无法测试它,但是f_name的输出使它看起来像是一个元组,其中包含一个元素。因此,您可以将.format(f_name, f_loc)更改为.format(f_name[0], f_loc)

修改

在回复您的修改时,请尝试使用.group()代替.groups()

答案 1 :(得分:3)

详细说明Peter's answer,我认为您正在指定一个项目tuple作为词典的关键字。如果你在某个地方的括号中评估一个表达式并将其作为键,那么请确保你没有逗号。

查看您进一步编辑的答案,确实是因为您正在使用正则表达式匹配的groups()方法。返回(the entire matched section + all the matched groups)的元组,因为你没有组,你想要整个事情。没有参数的group()会给你这个。

答案 2 :(得分:2)

我希望你的解析代码有问题。写入的行应该按预期工作。

答案 3 :(得分:1)

由于键是某种类型的元组,因此您可能希望在打印前加入不同的元素。我们无法从显示的片段中确切地知道密钥的重要性。

所以你可以这样做:

.format(", ".join(f_name), f_loc)