如何用openpyxl或pandas将Excel带引号值转为可执行Python列表
解决方法
使用openpyxl实现
- 读取Excel单元格内容后,先去除每个字符串首尾的双引号
- 对处理后的内容尝试执行:如果是可运行的Python表达式则动态生成结果,普通字符串直接保留
代码示例:
import openpyxl import random random_names = ["Harry", "Sam", "Albert"] # 加载目标工作簿和工作表 wb = openpyxl.load_workbook("your_file.xlsx") ws = wb.active result_list = [] for row in ws.iter_rows(values_only=True): for cell_value in row: if cell_value is not None: # 移除首尾的双引号 cleaned_str = cell_value.strip('"') try: # 执行表达式获取动态结果 evaluated_val = eval(cleaned_str) result_list.append(evaluated_val) except (SyntaxError, NameError): # 普通字符串直接加入列表 result_list.append(cleaned_str) print(result_list) # 输出示例: ["Hello!", "Testing!", "My name is Albert.", "Goodbye!"]
使用pandas实现
核心逻辑和openpyxl一致,读取数据后逐元素处理,区分普通字符串和可执行表达式:
代码示例:
import pandas as pd import random random_names = ["Harry", "Sam", "Albert"] # 读取Excel数据(header=None表示无表头) df = pd.read_excel("your_file.xlsx", header=None) result_list = [] # 遍历所有非空单元格值 for value in df.stack().tolist(): if pd.notna(value): cleaned_str = str(value).strip('"') try: evaluated_val = eval(cleaned_str) result_list.append(evaluated_val) except (SyntaxError, NameError): result_list.append(cleaned_str) print(result_list) # 输出示例: ["Hello!", "Testing!", "My name is Sam.", "Goodbye!"]
注意事项
eval存在安全风险,仅适用于你完全可控的Excel内容;如果内容不可控,请勿使用此方法。- 若Excel中的表达式逻辑更复杂,可根据实际场景调整异常捕获规则,避免误判普通字符串。
内容的提问来源于stack exchange,提问作者Tekko
相关产品推荐
相关产品推荐

