Python中如何修剪列表内的字符串?尝试的处理代码为何报错?
Python 列表存储字符串的空格修剪方法
需求说明
有一个存储字符串的列表,原始元素格式如下,需要把每个元素里-前后的多余空格删掉,得到指定效果:
- 原始列表:
item_s=["hello - this","is - a","sample - task","i","want - to","do"] - 目标输出:
item_s=["hello-this","is-a","sample-task","i","want-to","do"]
尝试代码的报错问题
用户原本编写了用于处理价格区间格式、给数字添加千分位逗号的功能代码,但运行时触发报错,附原始代码片段:
amount=list(df["Price Range"]) def add_commas(s): s1, s2 = s.split('-') def process(s_part): n, tmp_s = len(s_part), [] for i in range(n): if i and not i % 3: tmp_s.append(',') tmp_s.append(s_part[n - i - 1]) return ''.join(tmp_s[::-1]) return process(s1) + '-' + process(s2) def main(): amount=list(df["Price Range"]) return [add_commas(v) for v in amount] main
具体实现方式
要完成-前后的空格修剪,不需要复杂逻辑,根据实际格式选择对应方法即可:
- 如果元素格式固定,
-前后永远是1个空格:直接把字符串里的" - "替换成"-",用列表推导式遍历全部元素即可:item_s = ["hello - this","is - a","sample - task","i","want - to","do"] processed = [s.replace(" - ", "-") for s in item_s] - 如果格式不固定,
-前后空格数可能变化、或者部分元素根本没有-:先按-把字符串拆成片段,把每个片段首尾的空格去掉,再用-拼回去就行,这种方法不会因为元素无-报错,适配性更好:processed = ["-".join(part.strip() for part in s.split("-")) for s in item_s]
原代码的报错原因拆解
代码运行不通主要来自三个问题:
- 缩进完全错乱:
process函数定义、循环逻辑、返回语句都没有缩进到对应的函数块里,Python无法解析这个语法结构 - 函数未正确调用:代码末尾仅写了
main函数名,没有加括号执行,整个处理逻辑实际不会运行 - 解包逻辑不兼容:直接把
s.split('-')的结果拆成s1和s2两个变量,如果元素里没有-(比如示例里的"i"),拆分后只有1个值,硬要匹配2个变量的解包要求就会直接抛出值错误
内容的提问来源于stack exchange,提问作者Yatin Hasija
相关产品推荐
相关产品推荐

