Как перенести столбец данных в одну строку с несколькими столбцами в Python? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь собрать некоторые данные с веб-сайта, и мне удается собрать важную информацию, но когда я печатаю ее в файл 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...

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

Вы можете попробовать заменить строку кода: print (stats) на print (stats, end = "")

0 голосов
/ 28 марта 2019

Если вы делаете это только один раз, и вы довольны этим макетом (содержимое, разделенное тегом p, попадает в одну и ту же ячейку) ... вы можете использовать pandas

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

0 голосов
/ 28 марта 2019

Просто измените конец печати

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 + " ")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...