如何用startswith结合lambda函数将列表中以B开头的字符串转为1
问题描述
现有如下数据:
49 873
50 575
51 487
52 B000XPZCXW
53 B098LPQ5LM
54 B09W5S7GFK
需要将所有以'B'开头的字符串值转换为整数1,预期输出:
49 873
50 575
51 487
52 1
53 1
54 1
要求使用startswith()结合lambda函数实现。
解决方案
可以用Python处理,通过拆分每行数据、lambda判断转换、格式化对齐来实现:
# 原始数据 data = [ "49 873", "50 575", "51 487", "52 B000XPZCXW", "53 B098LPQ5LM", "54 B09W5S7GFK" ] # 定义处理单行的lambda函数 process_line = lambda line: f"{parts[0]:<10} {1 if parts[1].startswith('B') else parts[1]:>8}" if (parts := line.split(maxsplit=1)) else line # 遍历处理并输出 for line in data: print(process_line(line))
逻辑说明
split(maxsplit=1):将每行拆分为两个部分,避免内容中的空格干扰拆分结果parts[1].startswith('B'):用startswith()判断第二个字段是否以'B'开头,符合条件则替换为1,否则保留原内容- 格式化字符串
f"{parts[0]:<10} {value:>8}":保证输出格式和预期一致,左侧字段左对齐占10位,右侧字段右对齐占8位
运行代码后即可得到预期的输出效果。
内容的提问来源于stack exchange,提问作者Bhagyashree Swain
相关产品推荐
相关产品推荐

