網站首頁 編程語言 正文
Python讀取HTML表格
數據部門提供的數據是xls格式的文件,但是執行讀取xls文件的腳本報錯。
xlrd報錯:
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'<html xm'
讀取xlrd的腳本
data_lines = read_excel_file(self.file_path)
def read_excel_file(file_path):
"""
讀取excel文件
"""
import xlrd
print('[Info] excel file: {}'.format(file_path))
book = xlrd.open_workbook(file_path)
sheet = book.sheet_by_index(0)
data_lines = []
for row in range(0, sheet.nrows):
line_data = []
for column in range(0, sheet.ncols):
val = sheet.cell(row, column).value
line_data.append(val)
data_lines.append(line_data)
return data_lines # 二維數組
原因是文件格式是HTML表格,參考python xlrd unsupported format, or corrupt file.
使用pandas的read_html讀取文件,同時替換nan為空字符,數據格式保持一致。
def read_html_table(file_path):
? ? """
? ? 讀取html表格
? ? """
? ? import pandas as pd
? ? pd_table = pd.read_html(file_path)
? ? df = pd_table[0]
? ? # num_col = df.shape[1]
? ? # num_row = df.shape[0]
? ? df_data = df.values.tolist()
? ? df_data = df_data[1:]
? ? for r_idx, row in enumerate(df_data):
? ? ? ? for c_idx, value in enumerate(row):
? ? ? ? ? ? # 判斷nan,參考https://stackoverflow.com/questions/944700/how-can-i-check-for-nan-values
? ? ? ? ? ? if value != value:
? ? ? ? ? ? ? ? df_data[r_idx][c_idx] = ""
? ? return df_data
讀取問題解決。
pd.read_html讀取數據不完整問題
問題:有一個較大的表格數據存在了html中,打算用read_html直接取出來這部分數據,但后來發現read_html讀取的數據不完整,后來檢查html的table都沒有任何問題
解決辦法
pd.read_html的默認解析器為 'lxml' ,添加參數flavor='bs4'便可解決
原文鏈接:https://blog.csdn.net/caroline_wendy/article/details/117256179
相關推薦
- 2021-11-10 Android?Studio設置繪制布局時的視圖_Android
- 2022-04-27 jQuery實現消息滾動播放效果_jquery
- 2023-10-17 npm 下載依賴項顯示proxy代理錯誤network ‘proxy‘ config is set
- 2022-10-03 Objective-C之Category實現分類示例詳解_IOS
- 2022-12-13 C++?POSIX?API超詳細分析_C 語言
- 2022-08-29 Linux安裝Docker詳細教程_docker
- 2022-01-10 Set、Map、WeakSet 和 WeakMap 的區別?
- 2022-12-22 React類組件和函數組件對比-Hooks的簡介_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支