【问题标题】:For loop printing values vertical - Python 3.5对于循环打印值垂直 - Python 3.5
【发布时间】:2017-12-03 05:54:00
【问题描述】:

让我换个问题。我正在通过 tweepy 收集推文 ID,并通过这些 ID 进行迭代,以表示某个主题的收藏/转推。我无法抓取我在此列表中发布的每个 id,由于某种原因它垂直抓取它们?任何帮助将不胜感激。

ids = ['880420289787699200', '880420289787699200', '880420289946959872', '880420289946959872', '880420290144153601', '880420290144153601', '880420290827780097', '880420290827780097', '880420288370016256', '880420288370016256', '880420291268169728', '880420291268169728', '880420294980235265', '880420294980235265', '880420296599248896', '880420296599248896', '880420296687222786', '880420296687222786', '880420299216478209', '880420299216478209', '880420299040149505', '880420299040149505', '880420298834804736', '880420298834804736', '880420298910081026', '880420298910081026']

for e in ids:
    print (e[0])

#Output:
8
8
8
8
8
8
8

当我使用时:

for e in ids:
    print (e)

输出:

880420289787699200 880420289787699200 880420289946959872 880420289946959872 880420290144153601 880420290144153601 880420290827780097 880420290827780097 880420288370016256 880420288370016256 880420291268169728 880420291268169728 880420294980235265 880420294980235265 880420296599248896 880420296599248896 880420296687222786 880420296687222786 880420299216478209 880420299216478209 880420299040149505 880420299040149505 880420298834804736 880420298834804736 880420298910081026 880420298910081026

我希望 (e) 成为第一个 id(例如 880420289787699200)。这可能是一个简单的解决方法,我只是一直坚持下去。

【问题讨论】:

  • 你为什么要print (e[0])?你试过打印print(e)吗?
  • 您只抓取了e 的第一个字母,所以所有这些都在打印。只需摆脱[0] 即可打印e。
  • 是的,正如@idjaw 所说,你在不应该下钻的时候下钻。 e 将是 ID 本身,e[0] 获取该字符串的第一个字符。
  • 列表中没有垂直或水平的东西。在您的 for 循环中,e 是列表的一个元素:第一个,然后是第二个,......您可能只想在每次打印时转到下一行。试试print(e+"\n")
  • @BoilingFire 奇怪的是print 应该默认添加“\n”。为了确定,我尝试了没有“+\n”的代码,它确实将每个 id 打印在单独的行上。

标签: python list python-3.x for-loop tweepy


【解决方案1】:

如果没有e[0],因为您已经遍历了 id,那么每个 e 就是一个 id。

例如,在第一次迭代中,e 等于 '880415003748257793',因此当您输入 e[0] 时,您会得到 8,因为这是字符串的第一个字符。

for e in ids:
    print (e)

【讨论】:

  • 当我输入:for e in ids: print(e) 我的输出如下:880420289787699200 880420289787699200 880420289946959872 880420289946959872
  • 你想要什么,不是吗?
  • 不,我希望单独抓取每个 ID,print(e) 一次抓取它们,这就是我使用 print(e[0]) 的原因。我在上面的问题中详细阐述了。
  • 每次迭代 e 都持有与 id 列表不同的 id。
【解决方案2】:

通过print (e[0]),您将打印每个字符串中的第一个字母。如果您改为写print (e),您将打印整个字符串。

【讨论】:

    【解决方案3】:

    ids 中的每个 e 代表一个数字,所以 e[0] 代表它的第一个数字。

    ids = ['880415003748257793', '880415005073702912','880415004809408512','880415007942619136', '880415008470908930','880415010987560960', '880415011105067009', '880415011709083648']
    
    for e in ids:
        print (e[0]) # prints first digit
        print (e) # prints number
    

    【讨论】:

      【解决方案4】:

      您不需要循环来获取第一个 id。直接从它的列表中提取它:

      ids = ['880415003748257793', '880415005073702912','880415004809408512','880415007942619136', '880415008470908930','880415010987560960', '880415011105067009', '880415011709083648']
      
      # Note: no space needed after "print" in python 3
      # (print is a normal function in python 3)
      print(ids[0])
      

      在你的循环中,e 连续获取ids 中元素的值,所以在第一轮中,你得到"880415003748257793",在第二轮中,你得到"880415005073702912",等等。还有你的@987654326 @ 提取这些 id 的第一个字母(都以 '8' 开头,因此您观察到的输出)。

      【讨论】:

      • 这行得通,但是如果我想要一个函数来完成每个 id 的操作,那么如果我只是使用 for 循环它就不起作用,那么使用 for 循环遍历它。改进了上面的问题。
      • 我还是不明白什么是行不通的。您想对每个 id 执行什么操作?在您的代码中,您在循环中执行的操作是打印当前 ID。它似乎工作正常(除了 print 通常会插入行尾,并且在您显示的输出中,奇怪的是,id 用空格分隔,而不是每个都在单独的行上。)
      猜你喜欢
      • 1970-01-01
      • 2022-11-19
      • 2022-11-26
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多