为什么这个python bs4&csv编写器代码要在BOM中编写?
我正在使用bs4从HTML中提取一个多语言表,并将其保存为csv。 但是无论我用encoding=utf-8做什么,我都会得到一个由BOM编写的csv文件。 在抓取和保存HTML时,是否有任何简单的方法可以使用简单的选项来更改它? 我将utf-8改为euc-**选项,因为目标网站是用多国语言编写的,但这是徒劳的为什么这个python bs4&csv编写器代码要在BOM中编写?,python,csv,web-scraping,utf-8,beautifulsoup,Python,Csv,Web Scraping,Utf 8,Beautifulsoup,我正在使用bs4从HTML中提取一个多语言表,并将其保存为csv。 但是无论我用encoding=utf-8做什么,我都会得到一个由BOM编写的csv文件。 在抓取和保存HTML时,是否有任何简单的方法可以使用简单的选项来更改它? 我将utf-8改为euc-**选项,因为目标网站是用多国语言编写的,但这是徒劳的 soup=bs(res.text,'html.parser',from_encoding='utf8') resultset = soup.find('table',class
soup=bs(res.text,'html.parser',from_encoding='utf8')
resultset = soup.find('table',class_="type_12345")
print(resultset)
records=[]
for tr in resultset.find_all('tr'):
tds = tr.find_all('td')
#url = tds[2].a.get('href')
records.append([elem.text.encode('utf8') for elem in tds])
with open('whystillBOM.csv', 'a',encoding="utf-8-sig") as f:
writer = csv.writer(f)
writer.writerows(records)
“utf-8-sig”编码自动写入Microsoft版本utf-8的BOM。如果您不需要BOM表,只需使用UTF-8即可
如果您正在读取的文件可能包含BOM表,则您可以将其解码为utf-8-sig,并且标准utf-8仍将被解码而不会出错。谢谢您的回答!即使我在上面的代码中将所有内容更改为UTF8,它仍然会写入BOM文件。。原因是什么?谢谢您是否使用新的输出文件?仅附加到现有csv不会从文件开头删除BOM表。如果不是这样,也许您可以将您的问题包含在一些数据中,这些数据在运行代码时会产生这个结果。