Форматирование вывода ключа из словаря - PullRequest
1 голос
/ 30 мая 2009

У меня есть словарь, в котором в качестве ключа хранится строка, а в качестве значения - целое число. В моем выводе я хотел бы, чтобы ключ отображался в виде строки без скобок или запятых. Как бы я это сделал?

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 голосов
/ 30 мая 2009

У меня нет Python 3, поэтому я не могу проверить это, но вывод f_name делает его кортежем с одним элементом Таким образом, вы бы изменили .format(f_name, f_loc) на .format(f_name[0], f_loc)

EDIT

В ответ на ваши изменения попробуйте использовать .group() вместо .groups()

3 голосов
/ 30 мая 2009

Чтобы уточнить ответ Питера , мне кажется, что вы назначаете один элемент кортеж в качестве ключа вашего словаря. Если вы где-то вычисляете выражение в скобках и используете его в качестве ключа, убедитесь, что в нем нет случайных запятых.

Глядя на ваш отредактированный ответ, это действительно потому, что вы используете метод groups () вашего соответствия регулярному выражению. Это возвращает кортеж (the entire matched section + all the matched groups), и, поскольку у вас нет групп, вам нужна вся эта вещь. group() без параметров даст вам это.

2 голосов
/ 30 мая 2009

Я ожидаю, что у вас есть проблема с вашим кодом анализа. Строки, как написано, должны работать как положено.

1 голос
/ 30 мая 2009

Поскольку ключ - это некоторый тип кортежа, вы можете захотеть объединить различные элементы перед печатью. Мы не можем точно сказать, какое значение имеет ключ из показанного фрагмента.

Так что вы можете сделать что-то вроде этого:

.format(", ".join(f_name), f_loc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...