Python中如何批量处理变量并将变量与字符串按列打印
批量处理字符串并实现列对齐打印
1. 先修复表格代码的报错
你写的table_data中子列表之间缺少逗号,导致Python解析错误,修正后代码如下:
str1 = 'one' str2 = 'two' str3 = 'three' str4 = 'four' str5 = 'five' str6 = 'six' str7 = 'seven' table_data = [ [str1, str2, str3], # 添加逗号分隔子列表 [str4, str5, str6], # 添加逗号分隔子列表 [str7, 'eight', '9'] ] for row in table_data: print("{: >20} {:>20} {:>20}".format(*row))
2. 优化批量字符串处理流程
放弃myStr_1、codec_1这种逐个命名变量的繁琐方式,改用列表统一存储原始字符串,搭配函数实现批量处理:
步骤1:用列表统一管理原始字符串
original_strings = [ 'neé', 'ümlaut', 'skårsgard', 'scheiß', 'kødd' # 可继续添加任意数量字符串 ]
步骤2:定义批量处理函数
def process_string(s): # 编码并转大写,注意error参数为字符串'namereplace' encoded = s.encode('ascii', errors='namereplace') return encoded.upper().decode() # 转成字符串方便后续打印
步骤3:批量处理所有字符串
processed_strings = [process_string(s) for s in original_strings]
3. 实现任意数量字符串的动态列对齐打印
如果需要将处理后的字符串分成指定列数打印,可通过拆分列表+计算列宽的方式实现动态对齐,避免固定宽度的局限性:
def print_in_columns(data, columns=2): # 将一维列表拆分为二维行列表 rows = [data[i:i+columns] for i in range(0, len(data), columns)] # 计算每列的最大宽度 col_widths = [] for col_idx in range(columns): # 提取当前列的所有元素,空位置用空字符串填充 col_elements = [row[col_idx] if col_idx < len(row) else '' for row in rows] max_width = max(len(elem) for elem in col_elements) col_widths.append(max_width) # 格式化并打印每行 for row in rows: formatted_items = [f"{elem:<{col_widths[i]}}" for i, elem in enumerate(row)] print(' '.join(formatted_items))
调用示例
# 按3列打印处理后的字符串 print_in_columns(processed_strings, columns=3)
输出效果
NE\N{LATIN SMALL LETTER E WITH ACUTE}ÜMLAUT SKÅRSGARD SCHE\ISSY KØDD
整合完整代码
def process_string(s): encoded = s.encode('ascii', errors='namereplace') return encoded.upper().decode() def print_in_columns(data, columns=2): rows = [data[i:i+columns] for i in range(0, len(data), columns)] col_widths = [] for col_idx in range(columns): col_elements = [row[col_idx] if col_idx < len(row) else '' for row in rows] max_width = max(len(elem) for elem in col_elements) col_widths.append(max_width) for row in rows: formatted_items = [f"{elem:<{col_widths[i]}}" for i, elem in enumerate(row)] print(' '.join(formatted_items)) # 原始字符串列表 original_strings = [ 'neé', 'ümlaut', 'skårsgard', 'scheiß', 'kødd' # 可继续添加任意数量字符串 ] # 批量处理 processed_strings = [process_string(s) for s in original_strings] # 按3列打印 print_in_columns(processed_strings, columns=3)
内容的提问来源于stack exchange,提问作者prolix
相关产品推荐
相关产品推荐

