2009-05-29 62 views
1

密钥的输出I具有存储一个字符串作为关键字的词典,和整数的值。在我的输出中,我希望将键显示为不带圆括号或逗号的字符串。我将如何做到这一点?格式化从字典

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) 

我输出之前使用类型(),我VERI田间它仍然是一个字符串,但输出时一样,名字是一个元组

回答

3

为了详细说明Peter's answer,它看起来对我像你分配单项tuple作为您的词典的关键。如果你在某个地方用圆括号评估一个表达式,并用它作为关键字,那么确保你没有那里的逗号逗号。

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

+0

啊,我看我做什么,但我仍然不确定如何解决它。当我获得函数的名称并使用正则表达式时,我使用了.groups()方法。我将在原始代码中添加该代码,因为我已将其转换为str,并且仍然产生相同的输出 – Justen 2009-05-29 22:49:15

+0

如果使用.groups(),请尝试仅使用工作的.group() – 2009-05-29 22:51:43

2

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

4

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

编辑

在回答您的编辑,请尝试使用.group()代替.groups()

1

由于关键是某种类型的元组的,你可能希望在打印之前加入不同的元素。我们无法真正了解所显示的代码片段的重要性。

所以,你可以不喜欢这样的:

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