我一直在使用BeautifulSoup .find函數獲得的字符串中出現隱藏換行符的問題。我已經掃描了一個html文檔的代碼,並以字符串的形式提取了名稱,標題,公司和國家。我打了檢查,看到他們是字符串,當我打印他們,並檢查他們的長度一切似乎是正常的字符串。但是當我在print("%s is a %s at %s in %s" % (name,title,company,country))
或outputWriter.writerow([name,title,company,country])
中使用它們寫入csv文件時,我會在字符串中看到額外的換行符。BeautifulSoup將不需要的換行符添加到字符串Python3.5
發生了什麼事?或者任何人都可以將我指向正確的方向?
我是新來的Python,並不確定在哪裏查找所有我不知道的東西,所以我在花一整天的時間試圖解決問題後問這裏。我已經通過google和其他幾個關於剝離隱藏字符的堆棧溢出文章進行了搜索,但似乎沒有任何工作。
import csv
from bs4 import BeautifulSoup
# Open/create csvfile and prep for writing
csvFile = open("attendees.csv", 'w+', encoding='utf-8')
outputWriter = csv.writer(csvFile)
# Open HTML and Prep BeautifulSoup
html = open('WEB SUMMIT _ LISBON 2016 _ Web Summit Featured Attendees.html', 'r', encoding='utf-8')
bsObj = BeautifulSoup(html.read(), 'html.parser')
itemList = bsObj.find_all("li", {"class":"item"})
outputWriter.writerow(['Name','Title','Company','Country'])
for item in itemList:
name = item.find("h4").get_text()
print(type(name))
title = item.find("strong").get_text()
print(type(title))
company = item.find_all("span")[1].get_text()
print(type(company))
country = item.find_all("span")[2].get_text()
print(type(country))
print("%s is a %s at %s in %s" % (name,title,company,country))
outputWriter.writerow([name,title,company,country])
我解決了我的問題嘗試一個更多的過濾器。 def filter_non_printable(str): return''.join([c for str in if(ord(c)> 31 or ord(c)== 9]) – gsears