修剪python bs4中的空白区域

时间:2013-10-18 19:53:41

标签: python python-2.7 web-scraping beautifulsoup screen-scraping

我正在尝试删除已删除数据中的空格。我提到了所有可用的解决方案,但似乎没有任何效果。

这是我的代码

    from bs4 import BeautifulSoup
import urllib2
url="http://www.sfap.org/klsfaprep_search?page=38&type=1&strname=&loc=&op=Lancer%20la%20recherche&form_build_id=form-72a297de309517ed5a2c28af7ed15208&form_id=klsfaprep_search_form"
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
universities=soup.findAll('div',{'class':'field-item odd'})
for eachuniversity in universities:
 #print eachuniversity['href']+","+eachuniversity.string.encode('utf-8').strip()
 print eachuniversity.string if eachuniversity  else ''

我得到的输出是

                    EMSP
None
None

                    BP J5

                    98880

                    NOUMEA

                    Nouvelle-Calédonie

                    Intra établissement

                    Dr Chantal Barbe

                    c.barbe@cht.nc

                    00 687 25 66 66 (standard)

                    emasp@cht.nc

                    1078 (poste Dr Barbe)

                    Accueil stagiaire
None

                    Régional
None

但我希望它是

EMSP,None,None, BP J5,98880,NOUMEA,Nouvelle-Calédonie,Intra établissement,Dr Chantal Barbe, c.barbe@cht.nc, 00 687 25 66 66 (standard), emasp@cht.nc, 1078 (poste Dr Barbe),  Accueil stagiaire, None, Régional,None

当我尝试其他SO答案时,我得到了Nonetype属性错误。

更新 我改进了我的脚本,如下所示

from bs4 import BeautifulSoup
import urllib2
url="http://www.sfap.org/klsfaprep_search?page=38&type=1&strname=&loc=&op=Lancer%20la%20recherche&form_build_id=form-72a297de309517ed5a2c28af7ed15208&form_id=klsfaprep_search_form"
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
for eachuniversity in soup.findAll('div',{'class':'field-item odd'}):
 print ''.join(eachuniversity.findAll(text=True)).encode('utf-8').strip()

这给了我以下输出

EMSP
Nom de la structure: 
                    EMASP
Hôpital Gaston Bourret
BP J5
98880
NOUMEA
Nouvelle-Calédonie
Intra établissement
Dr Chantal Barbe
c.barbe@cht.nc
00 687 25 66 66 (standard)
emasp@cht.nc
1078 (poste Dr Barbe)
Accueil stagiaire
7h30 17h
Régional
ouverture équipe mobile depuis le 1 aout 2011
Travail au quotidien avec le malade sur demande médecin référent
Activités de formation intra et extra hospitalières sur toute la Nouvelle Calédonie auprès de professionnels de la santé, des auxiliaires de vie, des bénévoles, des prêtres....
Information auprès du grand public
Travail de recherche : étude des problèmes ethniques; évaluation du ressenti des malades walisien et /ou kanak sur l' approche SP  et propositions

但我希望这一行以逗号分隔。

1 个答案:

答案 0 :(得分:1)

要在同一行打印,只需在,声明的末尾添加print

print ''.join(eachuniversity.findAll(text=True)).encode('utf-8').strip(),',',

您可能希望从文本中删除换行符。

print re.sub(r'\s+',' ',''.join(eachuniversity.findAll(text=True)).encode('utf-8')),',',

它将替换所有连续的空格字符,包括具有单个空格的换行符。