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

时间:2019-03-28 03:25:37

标签: excel python-3.x web-scraping beautifulsoup

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

我对Web抓取还很陌生,我尝试使用dependencies { implementation project(':ProjectB') } ,它只是将所有数据放入我想要的一行中,但是所有数据都串联到一个列中

A problem occurred evaluating project ':ProjectB'.
> Could not find method api() for arguments [:ProjectA] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
.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()

3 个答案:

答案 0 :(得分: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 + " ")

答案 1 :(得分:0)

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

答案 2 :(得分: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 )

如果您想使用熊猫来进行多次战斗,请参见以下答案:

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