如何打印从文本文件读取的列表元素并消除异常间距?
问题解决:打印列表元素时首个元素间距异常
问题根因
你通过readlines()读取的列表元素会保留文本行末尾的换行符\n,而print(*items)在解包元素时,会自动在元素之间添加空格。第一个元素输出后,自带的换行符让光标跳转到下一行,后续元素前面就会多出一个print自动添加的空格,视觉上显得第一个元素的间距和其他元素不一致。另外你代码里的print("\n Catalogue Items: \n")在标题前多了一个空格,也会干扰对齐效果。
修复方案
以下几种方法都能解决这个问题:
循环逐个打印元素
直接遍历items列表逐个打印,避免自动添加的空格:f.seek(0) fList = f.readlines() items = fList[::2] # 提取每隔一个的元素 print("\nCatalogue Items:\n") # 移除标题前的多余空格 for item in items: print(item, end='') # 元素自带换行符,用end=''避免重复换行用
join拼接后打印
将所有元素拼接成单个字符串再打印,不会产生额外空格:f.seek(0) fList = f.readlines() items = fList[::2] print("\nCatalogue Items:\n") print(''.join(items))先清除元素末尾的换行符
如果不需要保留原文件的换行符,可以先处理掉,再用sep='\n'指定分隔符:f.seek(0) fList = f.readlines() # 移除每个元素末尾的换行符,也可按需过滤空行 items = [line.rstrip('\n') for line in fList[::2]] print("\nCatalogue Items:\n") print(*items, sep='\n')
额外检查
可以确认下你的源文本文件第一行是否本身带有前导空格,如果有,即使修复代码,第一个元素也会保留空格。这种情况要么修改源文件,要么在代码里用line.strip()移除首尾空白(但会同时去掉换行符,需根据需求调整)。
内容的提问来源于stack exchange,提问作者Manpreet Singh
相关产品推荐
相关产品推荐

