为什么Python的strip()方法无法清除分割后列表项开头的空格?
问题原理说明
str.strip()方法的默认行为是仅移除字符串首尾位置的空白字符(包含空格、换行符\n、制表符\t、回车符\r等),不会处理字符串中间的空白内容。- 你的CSV文件每行的结构为
字段1; 字段2; 字段3; 字段4,分号和后续字段之间的空格属于字符串中间的内容,不在行首或行尾,所以row.strip()执行后只会删除行尾的换行符,这些中间的空格会被完整保留。 - 用
;分割字符串时,分号后的空格就会成为分割后对应元素的开头字符,因此你会看到分割后的元素前面带空格。
更稳妥的解决方案
你目前用row.replace(" ", "")的方案会删除整行所有空格,如果字段内部本身存在需要保留的空格会导致数据异常,更合理的写法是分割后对每个字段单独做strip处理:
with open("db.csv", "r") as file: for row in file: row = row.strip() print("Stripped:", row) # 分割后逐个清理字段前后空白 task = tuple(item.strip() for item in row.split(";")) print("Splitted:", task)
内容的提问来源于stack exchange,提问作者Heikki
相关产品推荐
相关产品推荐

