如何在循环中为字符串变量追加内容?Excel数据读取场景实现咨询
问题1:如何在循环中为字符串变量追加内容?
Python里的字符串是不可变类型——说白了就是你没法直接修改原字符串,每次追加操作其实是生成一个新的字符串对象。不过日常使用时,有两种靠谱的方式能实现循环追加:
用
+=直接追加:这种方式简单直白,适合循环次数不多的场景,写起来省心。举个例子:final_str = "" for word in ["Hi", " ", "there", "!"]: final_str += word print(final_str) # 输出: Hi there!用列表暂存+
join拼接:如果循环次数特别多,这种方式效率更高——因为列表的append操作比反复创建新字符串要快得多。示例代码:str_parts = [] for word in ["Hi", " ", "there", "!"]: str_parts.append(word) final_str = "".join(str_parts) print(final_str) # 输出: Hi there!
问题2:循环读取Excel数据并生成对应命名的变量
先给你提个关键建议:别直接动态创建North1、Center1这种变量名!这种做法会让你的代码变得混乱,后续要调用这些变量时得费劲查找,还容易和现有变量重名出问题。更聪明的做法是用字典来存储——把"North1"、"Center1"作为字典的键,对应的列表作为值,管理起来超方便。
结合你给出的代码片段,我帮你调整成更合理的写法:
import os import openpyxl position = ["North", "Center", "South"] path = "你的实际文件路径" # 记得替换成你自己的路径 sheets_heights = [1, 2, 3] # 假设这是你要循环的序号,比如1、2、3 # 用字典存储所有结果,键是类似"North1"的字符串,值是对应的数据列表 position_data = {} for p in position: for i in sheets_heights: # 生成对应的键名,比如North1、Center2 current_key = f"{p}{i}" # 初始化空列表 position_data[current_key] = [] # 注意:如果多个循环用同一个Excel文件,把load_workbook提到循环外,避免重复加载浪费资源 # 替换成你对应p和i的文件名,比如f"{p}_data.xlsx" filename = f"匹配{p}和{i}的文件名.xlsx" workbook = openpyxl.load_workbook(os.path.join(path, filename), data_only=True) # 新版本openpyxl推荐用wb["Sheet1"]代替过时的get_sheet_by_name sheet = workbook["Sheet1"] # 读取B列数据(假设从第2行开始,跳过表头),追加到列表 for row in sheet.iter_rows(min_row=2, min_col=2, max_col=2, values_only=True): cell_value = row[0] if cell_value is not None: # 跳过空单元格 position_data[current_key].append(cell_value) # 之后要取North1的数据,直接用position_data["North1"]就行 print(position_data["North1"])
如果你铁了心要动态创建变量(真的不推荐),可以用globals()字典来操作,比如把上面的position_data[current_key] = []换成:
globals()[current_key] = []
这样之后你就能直接用North1、Center1这些变量名访问列表了,但还是那句话,字典的方式更稳妥、更易维护。
内容的提问来源于stack exchange,提问作者Nery Neto
相关产品推荐
相关产品推荐

