Python3 предотвращает вложенный список и показывает позицию / индекс значений в списке

Как следует из названия, я получаю вложенный список от двойного разделения.

"" .join не помогло с этой проблемой. Я также не могу понять, как распечатать позицию слова в списке.

Цель состоит в том, чтобы разделить текстовые слова пользователя id на вкладке (что работает) и распечатать слова с их положением в списке.

import sys
def main():
    olist = []
    for line in sys.stdin:
        i,u,t,w = line.split('\t')

        olist.append(w.split())
        print(olist)
        for num,name in enumerate(olist):
            print(num, name)

выходная печать (список):

[['RT', '@AfshinEllian1', ':', 'Kennelijk', 'vinden', 'ze', 'daar', 'aan', 'die', 'gezellige', 'tafel', 'normaal', 'dat', 'steltje', 'barbaren', 'onze', 'grondwettelijke', 'rechten', 'bedreigen', '.', 'Zouden', 'we', 'ook', 'voor', 'andere', 'buitenwettelijke', 'dreigingen', 'moeten', 'capituleren', '?', 'Wat', 'een', 'door', 'ons', 'gesubsidieerde', 'domheid', '!', '#laatop1', '#cartoonwedstrijd']]

вывод печати (число, имя):

0 ['RT', '@AfshinEllian1', ':', 'Kennelijk', 'vinden', 'ze', 'daar', 'aan', 'die', 'gezellige', 'tafel', 'normaal', 'dat', 'steltje', 'barbaren', 'onze', 'grondwettelijke', 'rechten', 'bedreigen', '.', 'Zouden', 'we', 'ook', 'voor', 'andere', 'buitenwettelijke', 'dreigingen', 'moeten', 'capituleren', '?', 'Wat', 'een', 'door', 'ons', 'gesubsidieerde', 'domheid', '!', '#laatop1', '#cartoonwedstrijd']

Желаемый результат =

RT [0]
@AfshinEllian1 [1]
: [2]
Kennelijk [3]

так далее

Не могли бы вы показать какой-нибудь пример желаемого результата?

Teoretic 13.09.2018 20:29

Поскольку в вашем вложении всего один элемент, почему бы просто не переключиться на enumerate(olist[0])? Мы не уверены, какой результат вы ожидаете от этого, и вы не позаботились о правильном вводе.

Prune 13.09.2018 20:30

Добавлен желаемый результат

stefan lakin 13.09.2018 20:32
0
3
29
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я правильно понимаю вашу проблему, эта строка:

  olist.append(w.split())

не делает то, что вы хотите. Вместо этого вам нужно расширить список:

  olist.extend(w.split())

который объединяет два списка.

Спасибо, это именно то, что я искал

stefan lakin 13.09.2018 20:43

Нет необходимости разделять его дважды, просто распечатайте его напрямую через:

import sys

def main():
    for line in sys.stdin:
        for num, name in enumerate(line.split("\t")):
            print("{} [{}]".format(name.strip(), num))

main()

# next line is input line
This    is  a   test

# and the output for it ...
This [0]
is [1]
a [2]
test [3]

Если вы хотите иметь постоянную нумерацию, вы также можете использовать этот код. Здесь вы можете просто использовать оператор +, который объединит ваши списки, что, вероятно, именно то, что вам нужно.

def main():
    olist = []
    for line in sys.stdin:
        olist += [name for name in line.split("\t")]
        for num, name in enumerate(olist):
            print("{} [{}]".format(name.strip(), num))

Используемый .strip()-метод является просто косметическим, потому что sys.stdin также улавливает разделитель строк.

Другие вопросы по теме