Python Openpyxl如何读取列值按规则拼接生成链接数组
最优实现方案
你现有代码缺少工作表对象的定义,需要先补充对应逻辑,优先用Python列表推导式实现新数组生成,代码简洁且执行效率高于普通循环append的写法:
方案一:保留fileNameArray(后续需要用到该数组时选择)
from openpyxl import load_workbook # 加载工作簿、获取工作表 workbook = load_workbook(filename="./test.xlsx") sheet = workbook.active # 如果要指定工作表可以替换为 workbook['你的工作表名称'] # 生成fileNameArray fileNameArray = [] for column in sheet.iter_cols(min_row=2, min_col=1, max_row=300, max_col=1): for cell in column: # 过滤空单元格避免生成无效链接,不需要该逻辑可以去掉判断直接append if cell.value: fileNameArray.append(str(cell.value)) # 生成linkArray linkArray = [ f"https://www.differentLinkIfNameStartsWithXYZ/{filename}" if filename.startswith("XYZ") else f"https://www.linkName.com/{filename}" for filename in fileNameArray ]
方案二:直接生成linkArray(不需要fileNameArray时选择,节省内存)
不用额外存储fileNameArray,读取Excel单元格时直接生成链接,节省一次数组遍历的开销:
from openpyxl import load_workbook workbook = load_workbook(filename="./test.xlsx") sheet = workbook.active linkArray = [] for column in sheet.iter_cols(min_row=2, min_col=1, max_row=300, max_col=1): for cell in column: if not cell.value: continue filename = str(cell.value) if filename.startswith("XYZ"): link = f"https://www.differentLinkIfNameStartsWithXYZ/{filename}" else: link = f"https://www.linkName.com/{filename}" linkArray.append(link)
上述代码使用的f-string语法为Python3.6及以上版本支持,如果你使用更低版本的Python,可替换为
format写法:"https://www.linkName.com/{}".format(filename)
内容的提问来源于stack exchange,提问作者Zac1
相关产品推荐
相关产品推荐

