如何在python中将一列数据传输到一行中有多列?

问题描述 投票:0回答:3

我正在尝试从网站上抓取一些数据并设法收集重要信息,但当我将其打印到excel文件中时,数据只会流入一列。是否有提供的代码的解决方案或我将需要创建多个结果,然后打印出来。

我对网络抓取很新,我试图使用.join,它刚刚将所有数据放入我想要的一行,但是它全部连接成一列


totals = page_soup.findAll("p", {"class":"b-fight-details__table-text"})

for i in totals:
    stats = i.text.replace("\n"," ")        
    print(stats, end= " ")
    f.write(stats)

f.close()

 Stephen Thompson   Anthony Pettis         0            1            47 of 107            32 of 55            43%            58%            47 of 107 

输出当前是这个,但它全部卡在一列我希望它如下,显然我将在输出的代码中有标题

Fighter A        Fighter B      KD  TKD  S     TS  
Stephen Thompson Anthony Pettis 0   1    47 of 107 32 of 55 43% 58% etc...
excel python-3.x web-scraping beautifulsoup
3个回答
0
投票

您可以尝试替换代码行:print(stats)by print(stats,end =“”)


0
投票

只需更改打印结束即可

for i in totals:
    stats = i.text.strip()        
    print(stats, end = " ")
    #...#

它应该工作。

如果你想在你写的输出文件中使用相同的替换:

f.write(stats + " ")

有:

f.write(stats + " ")

例如:

with open("out.txt", "w") as f:
    for i in totals:
        stats = i.text.strip()        
        print(stats, end = " ");
        f.write(stats + " ")

如果字符串本身包含“\ n”字符,则可以替换它们:

with open("out.txt", "w") as f:
    for i in totals:
        stats = i.replace("\n", " ")        
        print(stats, end = " ");
        f.write(stats + " ")

0
投票

如果只做一次,你对这个布局感到满意(p标签分隔的内容最终在同一个单元格中)...你可以使用熊猫

import pandas as pd   
tables = pd.read_html('http://www.ufcstats.com/fight-details/56ae02578b1163ee')
df = tables[0]
df.to_csv(r'C:\Users\User\Desktop\data.csv', sep=',', encoding='utf-8-sig',index = False )

如果你想使用pandas追加多场战斗,请看这个答案:

https://stackoverflow.com/a/17135044/6241235

© www.soinside.com 2019 - 2024. All rights reserved.