1

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

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() ,我验证它仍然是一个字符串,但输出与 name 是一个元组时一样

4

4 回答 4

4

我没有 Python 3,所以我无法对此进行测试,但是 f_name 的输出使它看起来像是一个包含一个元素的元组。所以你会改变.format(f_name, f_loc).format(f_name[0], f_loc)

编辑

作为对您的编辑的回应,请尝试使用.group()而不是.groups()

于 2009-05-29T21:58:14.073 回答
3

为了详细说明彼得的答案,在我看来,您正在分配一个单项元组作为字典的键。如果您在某处计算括号中的表达式并将其用作键,请确保其中没有杂散的逗号。

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

于 2009-05-29T22:00:23.350 回答
2

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

于 2009-05-29T21:58:06.163 回答
1

由于键是某种类型的元组,您可能希望在打印之前加入不同的元素。我们无法从显示的代码段中真正分辨出密钥的重要性。

所以你可以做这样的事情:

.format(", ".join(f_name), f_loc)
于 2009-05-29T22:17:34.877 回答