У меня возникли проблемы с тем, что кажется скрытым символом новой строки в строках, полученных с помощью функции 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 для c в str, если ord (c)> 31 или ord (c) == 9]) – gsears