【问题标题】:how do you print to .csv for each ID in Python如何在 Python 中为每个 ID 打印到 .csv
【发布时间】:2016-05-11 00:51:17
【问题描述】:
import urllib
import re
import csv

player_code = open("Desktop/OHL PYTHON/test2.txt").read()

player_code = player_code.split("\r")

for pc in player_code:
    htmlfile = urllib.urlopen( "http://www.eliteprospects.com/iframe_player_stats_small.php?player="+pc+"")

    htmltext = htmlfile.read()  
    regex = '<font color="#000099">(.+?)</font>'  
    pattern = re.compile(regex)
    team = re.findall(pattern,htmltext)
    data = pc, team


    with open('my_games.csv', 'w') as csvfile:
        fieldnames = ['pc', 'team','League', 'Gp', 'G','A','P','Pims']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames,delimiter= ":",
                                extrasaction ='ignore')
        i=0
        writer.writeheader()
        for pc in player_code:
            writer.writerow({'pc':[pc],'team':[team]})
            i+=1

这只是一遍又一遍地返回一行数据。任何方向都会有所帮助!谢谢。

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: python regex csv url


【解决方案1】:

您应该在 for 循环之前打开文件或使用a+ 模式。 w 打开文件并在每次打开时截断其数据。

with open('my_games.csv', 'w') as csvfile:
    for pc in player_code:

with open('my_games.csv', 'a+') as csvfile

打开文件一次会是更好的方法。

由于您为写入数据而循环两次,因此您有多行。只需删除

i=0
for pc in player_code:
    writer.writerow({'pc':[pc],'team':[team]})
        i+=1

相反,我认为它会起作用。

writer.writerow({'pc':[pc],'team':[team]})

【讨论】:

  • 谢谢。这现在给了我我需要的所有数据。然而,它仍然为每个生成多行,而不是为每个 id 生成 1 行。有什么建议么?再次感谢你!我这么近! @Ashish
猜你喜欢
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 2023-03-22
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多