python中的Split返回一个多余的空白字符



我有一个文件,其中包含我读取的一些数据,与space, ,, n分开,并将其放在矩阵中。但我的代码返回一个多余的空白字符到我的矩阵。有人能帮我找到这个bug吗?谢谢。代码:

import re
lines = [re.split('[,n ]',line) for line in open('lines.txt')]
print lines
输入:

395,0 398,100
398,100 488,196
488,196 544,233
544,233 506,301
506,301 425,344
425,344 336,355
336,355 271,319
271,319 293,264
293,264 328,232
328,232 329,170
329,170 267,175
267,175 228,199
228,199 214,220
214,220 80,268
80,268 0,273
0,183 96,176
96,176 168,92
168,92 252,124
252,124 300,88
300,88 303,40
303,40 309,0

输出(第五列为多余):

[['395', '0', '398', '100', ''], ['398', '100', '488', '196', ''], ['488', '196', '544', '233', ''], ['544', '233', '506', '301', ''], ['506', '301', '425', '344', ''], ['425', '344', '336', '355', ''], ['336', '355', '271', '319', ''], ['271', '319', '293', '264', ''], ['293', '264', '328', '232', ''], ['328', '232', '329', '170', ''], ['329', '170', '267', '175', ''], ['267', '175', '228', '199', ''], ['228', '199', '214', '220', ''], ['214', '220', '80', '268', ''], ['80', '268', '0', '273', ''], ['0', '183', '96', '176', ''], ['96', '176', '168', '92', ''], ['168', '92', '252', '124', ''], ['252', '124', '300', '88', ''], ['300', '88', '303', '40', ''], ['303', '40', '309', '0', '']]
从文本文件中读取的

行通常在末尾有一个换行符(除非它们是最后一行,在这种情况下它们可能没有换行符)。换行符被去掉是很常见的(例如使用str.rstrip):

import re
lines = [re.split('[,n ]', line.rstrip('n')) for line in open('lines.txt')]
print lines

作为题外话,使用上下文管理器管理打开的文件是更好的实践:
with open('lines.txt') as input_file:
    lines = [re.split('[,n ]', line.rstrip('n')) for line in input_file]
print lines

最新更新