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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:45:48