pat*_*tka 1 python csv unicode
我尝试使用以下脚本使用python 将html表解析为csv:
from bs4 import BeautifulSoup
import requests
import csv
csvFile = open('log.csv', 'w', newline='')
writer = csv.writer(csvFile)
def parse():
html = requests.get('https://en.wikipedia.org/wiki/Comparison_of_text_editors')
bs = BeautifulSoup(html.text, 'lxml')
table = bs.select_one('table.wikitable')
rows = table.select('tr')
for row in rows:
csvRow = []
for cell in row.findAll(['th', 'td']):
csvRow.append(cell.getText())
writer.writerow(csvRow)
print(csvRow)
parse()
csvFile.close()
Run Code Online (Sandbox Code Playgroud)
此代码输出了一个清晰的格式化CSV文件,没有编码问题.
在EnricoTröger的Geany之前一切都很好.我的脚本无法写入ö
csv文件,所以我尝试了这个:
csvRow.append(cell.text.encode('ascii', 'replace'))而不是:csvRow.append(cell.getText())
尽管事实上每个表格单元都嵌套了,但一切都很好b''.
那么,如何使用我的scipt获得清晰的格式化csv文件(如第一个屏幕截图中)并更换或忽略所有非unicode符号(如第二个屏幕截图中)?
改变这个:
csvFile = open('log.csv', 'w', newline='')
Run Code Online (Sandbox Code Playgroud)
对于这个:
csvFile = open('log.csv', 'w', newline='', encoding='utf8')
Run Code Online (Sandbox Code Playgroud)
由于
open()用于打开CSV文件进行读取,因此默认情况下使用系统默认编码将文件解码为unicode(请参阅参考资料locale.getpreferredencoding()).要使用不同的编码对文件进行解码,请使用open的encoding参数:Run Code Online (Sandbox Code Playgroud)import csv with open('some.csv', newline='', encoding='utf-8') as f: reader = csv.reader(f) for row in reader: print(row)这同样适用于写入系统默认编码以外的其他内容:在打开输出文件时指定encoding参数.
我想你的系统默认编码不是utf8.你可以这样检查:
import locale
locale.getpreferredencoding()
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |