Python 3 удаляет символы из кортежей - PullRequest
0 голосов
/ 11 декабря 2018

Мои результаты выглядят так:

('04', 3)
('06', 1) 
('07', 1) 
('09', 2)

Я хочу, чтобы они выглядели так:

04 3
06 1
07 1
09 2

Я пробовал разделение (не строка, не могу этого сделать) .replace (требуется строка в качестве левого операнда, а не кортеж). Я «думаю», что я попытался правильно понять списки.Мне не ясно, что я должен делать, чтобы достичь желаемого конечного результата.Я пытаюсь использовать функции n00b, так как я изучаю это, поэтому я игнорирую Lambda, так как понятия не имею, что это такое.Сейчас я пытаюсь придерживаться списка, словаря, понимания, фрагмента и т. Д.

Мой пример ниже не будет работать так, как написано, я просто пытаюсь показать свою последнюю попытку.Когда я закомментирую строки 15, 16, 17, он запускается и создает пример, показанный выше.

fname = input("Enter file:")
if len(fname) < 1 : fname = "mbox-short.txt"
emails = open(fname)
counts=dict()
for email in emails:
    result=email.startswith('From ')
    if result is True:
        time=(email.split()[5])
        hour=(time.split(':')[0])
        counts[hour]=counts.get(hour, 0) +1
tmp=list()
for k, v in counts.items():
    tmp.append( (k, v) )
    tmp.sort()
    for char in tmp:
        if char in "(',)":
            tmp.replace(char,'')
for k in tmp:
    print (k)

Ответы [ 4 ]

0 голосов
/ 11 декабря 2018

Это может помочь вам

# ....
# Rest of your code
# ....
tmp=list()
for k, v in counts.items():
    tmp.append( (int(k), int(v)) ) # !!! make it integer
    tmp.sort()

for k in tmp:
    print (k)
0 голосов
/ 11 декабря 2018
mydata = [('04', 3), ('06', 1), ('07', 1), ('09', 2)]

for tup in mydata:
    print(*tup)    # this uses the default sep = " " for print
                   # *tup provides each element of tup to print

Вывод:

04 3
06 1
07 1
09 2

См.

0 голосов
/ 11 декабря 2018

Предполагая, что [('04', 3), ('06', 1), ('07', 1), ('09', 2)] является вашим вводом, вы можете просто сделать:

tupls = [('04', 3), ('06', 1), ('07', 1), ('09', 2)]

for x, y in tupls:
    print(x, y)

# 04 3
# 06 1
# 07 1
# 09 2
0 голосов
/ 11 декабря 2018

Вы можете использовать метод str.join для пробела:

for k in tmp:
    print (' '.join(k))
...