如何在CSV中去除空格?现有代码追加日志后产生多余空格
解决日志追加时多余空格的问题及strip()的正确用法
问题根源
你遇到的问题是因为后续输入的日志字符串可能带有首尾空格,而strip()是字符串专属方法,不能直接对列表或非字符串类型调用,否则会报错;如果没遍历每个元素处理,自然也去不掉空格。
正确用法示例
strip()的作用是去除字符串首尾的空白字符(空格、换行、制表符等),不会影响字符串中间的空格(比如你代码里的"ref die"中间空格会保留)。下面是两种实用的处理方式:
1. 批量处理现有日志列表
如果日志是已存在的列表,遍历每一行的每个元素,只对字符串类型执行strip(),避免非字符串(比如数字)报错:
import csv # MANUAL ENCODES(模拟带空格的输入日志) logs = [["TT5134 ", " XACG2M756B2ZP0", "2055243 ", " ref die ", "abort;play ", " closed"]] # 批量处理每个字符串元素,去除首尾空格 processed_logs = [] for row in logs: cleaned_row = [] for item in row: if isinstance(item, str): cleaned_row.append(item.strip()) else: cleaned_row.append(item) # 非字符串元素直接保留 processed_logs.append(cleaned_row) # FILE DUMP with open(r"\\xcl3090dm1\checkout_eagle\ETS\PE_Downs(DONOTDELETE)\SR_Data.csv", "a") as csv_file: reports = csv.writer(csv_file) reports.writerows(processed_logs)
2. 动态输入时提前处理
如果日志是后续动态输入(比如用户输入、其他文件读取),在获取条目时直接处理:
# 示例:从用户输入获取单条日志 log_input = input("输入日志条目(逗号分隔):").split(",") # 处理每个元素的首尾空格 cleaned_entry = [item.strip() for item in log_input] # 添加到日志列表 logs.append(cleaned_entry)
常见错误规避
- 不要直接对整个列表调用
strip():logs.strip()会报错,因为strip()是字符串方法,列表没有这个属性。 - 不要对非字符串元素调用
strip():比如如果某个元素是整数2055243,调用2055243.strip()会报错,所以要先判断类型。
内容的提问来源于stack exchange,提问作者jaypeeee10
相关产品推荐
相关产品推荐

