Python3防止嵌套列表并在列表中显示值的位置/索引

时间:2018-09-13 18:27:06

标签: python indexing nested

正如标题所示,我从两次拆分中得到了一个嵌套列表。

“” .join没有帮助解决此问题。 我也不知道如何在列表中打印单词的位置。

目标是在有效的Tab上拆分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)

输出打印(olist):

[['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]

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,请执行以下操作:

  olist.append(w.split())

没有做您想要的。您需要扩展列表:

  olist.extend(w.split())

将两个列表合并在一起。

答案 1 :(得分:0)

无需将其拆分两次,只需通过以下方式直接打印即可:

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也会捕获行分隔符。