Python 2.7:如何正确拆分CSV文件?

时间:2018-02-12 16:38:38

标签: python python-2.7 csv beautifulsoup

我正在尝试拆分从URL中提取文本后得到的字符串。提取的数据放在CSV文件中,我试图分离数据。

playerInfo = items[i].getText(separator=u'%|-').encode('utf-8').split('%|-')

我想要实现的是删除%-。我提取的数据示例:

<div style="padding-left:20px; width:280px; float:left">&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;<a href="default.asp?id=19&amp;spillerid=739&amp;todo=arkiv">Alexander Back - Forsvar</a><br></div>

所以我想要的是将名称Alexander Back和位置Forsvar分开,然后删除-

在我的CSV中,我有两列;一个用于名称,一个用于位置。我通过执行以下操作来提取数据:

items = soup.find_all('div', attrs={'style': 'padding-left:20px; width:280px; float:left'})

这就是我想象CSV文件中的输出为: enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用.get_text(strip=True)来帮助获取文字。然后再进行一次剥离和分割将给出两个值:

from bs4 import BeautifulSoup
import csv

html = """
<div style="padding-left:20px; width:280px; float:left">&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;<a href="default.asp?id=19&amp;spillerid=739&amp;todo=arkiv">Alexander Back1 - Forsvar1</a><br></div>
<div style="padding-left:20px; width:280px; float:left">&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;<a href="default.asp?id=19&amp;spillerid=739&amp;todo=arkiv">Alexander Back2 - Forsvar2</a><br></div>
"""

soup = BeautifulSoup(html, "html.parser")

with open('output.csv', 'wb') as f_output:
    csv_output = csv.writer(f_output)
    csv_output.writerow(['Name', 'Position'])

    for div in soup.find_all('div', attrs={'style': 'padding-left:20px; width:280px; float:left'}):
        csv_output.writerow([e.strip() for e in div.get_text(strip=True).strip('-').split('-')])

给你一个output.csv文件,如下所示:

Name,Position
Alexander Back1,Forsvar1
Alexander Back2,Forsvar2