python,在第二个字符后将字符串拆分为数组

时间:2015-01-25 17:50:13

标签: python arrays split

我正在捕获包含以下内容的文件:

*> <'Char><'Char><'space><'string>*

例如: 原始文件

Fs .file1
 M /home/file2
?? /home/file3
M  /home/file4
 D /home/file5

我正在尝试将每一行放入列表中并始终获得一个包含2列的数组。我试过了

line.split(' ') 

但它不起作用,因为每行的第一个或第二个位置可能会出现一个空字符。

所以,我需要在第二个字符后进行拆分,这意味着上面文件的结果将是:

['Fs','.file1']
[' M','./home/file2']
['??','./home/file3']
['M ','./home/file4']
[' D','./home/file5']

如果修剪firl数组索引上的空字符

也是可以接受的
['Fs','.file1']
['M','./home/file2']
['??','./home/file3']
['M ','./home/file4']
['D','./home/file5']

2 个答案:

答案 0 :(得分:3)

使用rsplit假设内容在您的问题中看起来都像:

lines ="""Fs .file1
 M /home/file2
?? /home/file3
M  /home/file4
 D /home/file5"""

for line in lines.splitlines():
    # splitting once on " " starting from the right 
    # side keep all whitespace on the left elements
    print(line.rsplit(" ",1))

['Fs', '.file1']
[' M', '/home/file2']
['??', '/home/file3']
['M ', '/home/file4']
[' D', '/home/file5']

只需在您自己的代码中使用以下内容:

print [line.rstrip().rsplit(" ",1)for line in f]

或者@jonClements建议使用line.rpartition(' ')[::2]来确保每个列表都有两个元素:

print [line.rpartition(' ')[::2] for line in f]

答案 1 :(得分:1)

如果文件名前面总是有3个字符(固定宽度),那么按照简单的方法操作:

flags, filename = line[:2], line[3:]

没有必要做正确而不是正确的事情。