You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas read_excel时出现print语法错误的原因排查

问题描述

使用Pandas 2.1.4版本执行以下代码读取Excel文件:

import pandas as pd 

data = pd.read_excel(r'C:\Users\davansh.gupta\Downloads\data.xlsx')
data

触发了SyntaxError,错误信息如下:

{
  "name": "SyntaxError",
  "message": "Missing parentheses in call to 'print'. Did you mean print(...)? (__init__.py, line 1187)",
  "stack": "Traceback \u001b[1;36m(most recent call last)\u001b[0m:\n\n\u001b[0m  File \u001b[0;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\IPython\\core\\interactiveshell.py:3550\u001b[0m in \u001b[0;35mrun_code\u001b[0m\n    exec(code_obj, self.user_global_ns, self.user_ns)\u001b[0m\n\n\u001b[0m  Cell \u001b[0;32mIn[2], line 1\u001b[0m\n    data = pd.read_excel(r'C:/Users/davansh.gupta/Downloads/data.xlsx', sheet_name='with_npi')\u001b[0m\n\n\u001b[0m  File \u001b[0;32mc:\\Python311\\Lib\\site-packages\\pandas\\io\\excel\\_base.py:504\u001b[0m in \u001b[0;35mread_excel\u001b[0m\n    io = ExcelFile(\u001b[0m\n\n\u001b[0m  File \u001b[0;32mc:\\Python311\\Lib\\site-packages\\pandas\\io\\excel\\_base.py:1550\u001b[0m in \u001b[0;35m__init__\u001b[0m\n    if import_optional_dependency(\"xlrd\", errors=\"ignore\") is None:\u001b[0m\n\n\u001b[0m  File \u001b[0;32mc:\\Python311\\Lib\\site-packages\\pandas\\compat\\_optional.py:132\u001b[0m in \u001b[0;35mimport_optional_dependency\u001b[0m\n    module = importlib.import_module(name)\u001b[0m\n\n\u001b[0m  File \u001b[0;32mc:\\Python311\\Lib\\importlib\\__init__.py:126\u001b[0m in \u001b[0;35mimport_module\u001b[0m\n    return _bootstrap._gcd_import(name[level:], package, level)\u001b[0m\n\n\u001b[0m  File \u001b[0;32m<frozen importlib._bootstrap>:1206\u001b[0m in \u001b[0;35m_gcd_import\u001b[0m\n\n\u001b[0m  File \u001b[0;32m<frozen importlib._bootstrap>:1178\u001b[0m in \u001b[0;35m_find_and_load\u001b[0m\n\n\u001b[0m  File \u001b[0;32m<frozen importlib._bootstrap>:1149\u001b[0m in \u001b[0;35m_find_and_load_unlocked\u001b[0m\n\n\u001b[0m  File \u001b[0;32m<frozen importlib._bootstrap>:690\u001b[0m in \u001b[0;35m_load_unlocked\u001b[0m\n\n\u001b[0m  File \u001b[0;32m<frozen importlib._bootstrap_external>:936\u001b[0m in \u001b[0;35mexec_module\u001b[0m\n\n\u001b[0m  File \u001b[0;32m<frozen importlib._bootstrap_external>:1074\u001b[0m in \u001b[0;35mget_code\u001b[0m\n\n\u001b[0m  File \u001b[0;32m<frozen importlib._bootstrap_external>:1004\u001b[0m in \u001b[0;35msource_to_code\u001b[0m\n\n\u001b[1;36m  File \u001b[1;32m<frozen importlib._bootstrap>:241\u001b[1;36m in \u001b[1;35m_call_with_frames_removed\u001b[1;36m\n\n\u001b[1;36m  File \u001b[1;32mc:\\Python311\\Lib\\site-packages\\xlrd\\__init__.py:1187\u001b[1;36m\u001b[0m\n\u001b[1;33m    print \"EXTERNSHEET(b7-):\"\u001b[0m\n\u001b[1;37m    ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m Missing parentheses in call to 'print'. Did you mean print(...)?\n"
}

代码无其他关联程序,为何读取Excel操作会引发此print语法错误?

问题原因

这是因为你安装的xlrd版本为仅支持Python 2的旧版本,而当前使用的是Python 3.11环境。Python 3中print是必须带括号的函数,而Python 2中print是无需括号的语句,旧版xlrd的代码采用Python 2语法,导致在Python 3环境下导入xlrd模块时直接触发语法错误。

解决方案

  • 升级xlrd到支持Python 3的版本:
    先卸载旧版xlrd:
    pip uninstall xlrd
    
    再安装2.0.0及以上版本:
    pip install xlrd>=2.0.0
    
  • 改用openpyxl读取xlsx文件(若你的Excel为.xlsx格式):
    先安装openpyxl:
    pip install openpyxl
    
    然后在读取时指定引擎:
    import pandas as pd
    data = pd.read_excel(r'C:\Users\davansh.gupta\Downloads\data.xlsx', engine='openpyxl')
    
    也可直接卸载xlrd,Pandas会自动使用已安装的openpyxl处理xlsx格式文件。

内容的提问来源于stack exchange,提问作者Devansh Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 03:05:57