如何移除导入TXT文件转换为列表后的'\n'换行符?
问题出在你没用到处理好的字符串!
先看你代码里的关键错误:
你明明用line.rstrip('\n')处理掉了换行符,存在lines变量里,但转头又把**原始的带换行符的line**赋值给了prices,等于之前的换行符处理完全没用,split之后自然还带着\n。
修正步骤(一步步来)
1. 先理清变量名,避免重名混乱
你循环的那个列表叫prices,后面又把单行内容也赋值给prices,这会把原来的列表覆盖(只是你这里刚好循环完了才覆盖,没报错而已)。先把循环的列表改个名字,比如raw_prices。
2. 正确的处理流程
- 先把每一行的换行符(以及可能的首尾空格)去掉,得到干净的字符串
- 再对干净的字符串进行分割
- 把商品和价格分别存到两个列表里
- 最后用这两个列表生成字典
修正后的代码示例
# 假设你的原始列表叫raw_prices(替换成你实际的变量名) raw_prices = [ 'bananas,2.19\n', 'apples,0.89\n', 'steak,12.00\n', # ... 其他行 ] items = [] prices_list = [] for line in raw_prices: # 第一步:去掉当前行首尾的所有空白(包括换行符、空格) clean_line = line.strip() # 跳过空行(如果有的话) if not clean_line: continue # 第二步:按逗号分割成商品和价格 item, price = clean_line.split(',') # 第三步:把商品和价格分别加入列表(再strip一次保险,防止分割后还有空格) items.append(item.strip()) prices_list.append(price.strip()) # 第四步:把两个列表转成字典 grocery_dict = dict(zip(items, prices_list)) print(grocery_dict)
为什么之前的strip方法没用?
因为你处理完换行符后,根本没用到处理后的字符串!你写了lines = line.rstrip('\n'),但后面直接用prices = line(原始带换行的行)去split,等于白做了第一步。
验证输出
运行上面的代码后,你会得到没有\n的字典:
{'bananas': '2.19', 'apples': '0.89', 'steak': '12.00', ...}
内容的提问来源于stack exchange,提问作者andjrue
相关产品推荐
相关产品推荐

