【问题标题】:Re-arranging the format of csv in Python在 Python 中重新排列 csv 的格式
【发布时间】:2021-01-29 19:56:24
【问题描述】:

我尝试尽我所能解决这个问题,但电影的片名不会上升。问题出在 for 循环的第二块。这是我写的函数。

def writeFile(filename, movie_titles):
    with open(filename, 'w') as f:
        headers = "No., Title\n"
        f.write(headers)
        i = 0
    
        for title in movie_titles:
            while i < len(movie_titles[0:]): i = i + 1; f.write(str(i) + '\n')
            f.write(', '+ "%s\n" % title.replace(',', '') + '\n')
        f.close()

【问题讨论】:

    标签: python arrays csv web-scraping beautifulsoup


    【解决方案1】:

    你的循环有点混乱。您的代码进入 for 循环并遍历所有电影,在第一次迭代期间它执行 while 循环,并且只有在完成之后才继续 for 循环。 我会建议这样的事情:

    def writeFile(filename, movie_titles):
    with open(filename, 'w') as f:
        headers = "No., Title\n"
        f.write(headers)
        i = 0
    
        for i in range(len(movie_titles)):
            f.write(str(i+1) + ',')
            f.write("%s\n" % movie_titles[i].replace(',', ''))
        f.close()
    

    for 循环遍历从 0 到电影列表长度 - 1 的所有数字 然后写下数字,在这里添加 1 以便您的列表以 1 开头 之后你写你的电影标题。我假设你的movielist变量是一个列表,因此你可以通过list[index]索引这个列表,这个索引在我们的例子中是i,它的最大值对应于电影列表的最后一个元素。 你也有太多的换行符,因为每行只需要一个新行。

    也可以分别写入数字和电影名称,但是您需要指定要写入文件的哪一行。

    【讨论】:

      【解决方案2】:

      另一个答案有一个更直接和pythonic的方法,但是对于您的特定代码,这将解决它:

      def writeFile(filename, movie_titles):
          with open(filename, 'w') as f:
              headers = "No., Title\n"
              f.write(headers)
              i = 0
          
              for title in movie_titles:
                  i = i + 1
                  f.write(str(i) + ', '+ "%s\n" % title.replace(',', '') + '\n')
      

      请注意,不需要最后的 f.close()with 命令负责处理。

      【讨论】:

        【解决方案3】:

        你可以在 for 循环中使用enumerate() 来获取索引。例如:

        def writeFile(filename, movie_titles):
            with open(filename, 'w') as f:
                f.write("No., Title\n")
        
                for i, title in enumerate(movie_titles, 1):
                    f.write('{},{}\n'.format(i, title.replace(',', '')))
        

        注意:要创建 CSV 文件,请查看 csv 模块。

        【讨论】:

          猜你喜欢
          • 2016-01-05
          • 2020-12-06
          • 1970-01-01
          • 2020-11-23
          • 1970-01-01
          • 2015-12-07
          • 2016-10-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多