我有一个从文本文件中读取命令的程序
例如,命令语法如下,是一个字符串 'index command param1 param2 param3'
参数数量从0到3可变 index是一个整数 command是一个字符串 所有参数都是整数
我想拆分它们,以便我有一个如下列表
[index,'command',params[]]
这样做的最佳方式是什么?
由于
答案 0 :(得分:8)
不确定这是否是最佳方式,但这是一种方式:
lines = open('file.txt')
for line in lines:
as_list = line.split()
result = [as_list[0], as_list[1], as_list[2:]]
print result
结果将包含
['index', 'command', ['param1', 'param2', 'param3']]
答案 1 :(得分:5)
def add_command(index, command, *params):
index = int(index)
#do what you need to with index, command and params here
with open('commands.txt') as f:
for line in f:
add_command(*line.split())
答案 2 :(得分:2)
我通常写道:
lines = open('a.txt').readlines()
for line in lines:
para = lines.split()
index = int(para[0])
command = para[1]
para1 = float(para[2])
...
答案 3 :(得分:1)
line.split( )
答案 4 :(得分:1)
>>> for line in open("file"):
... line=line.rstrip().split(" ",2)
... line[0]=int(line[0])
... line[2]=line[2].split()
... print line
...
[1, 'command', ['param1', 'param2', 'param3']]
答案 5 :(得分:1)
如果您使用 Python 3 + ,那么以下内容应该足够PEP 3132: Extended Iterable Unpacking:
(index,command,*parameters) = line.split()
否则,我最喜欢詹姆斯最好的解决方案:
def add_command(index, command, *params):
...
答案 6 :(得分:0)
cb160 提供的答案是正确而明智的方式,但是,我是这样做的。 在 cb160 的代码中,只有索引应该是整数格式,正如您所提到的那样。
在下面的代码中,我添加了输入文件中空行的例外(如果有的话)。
#Example Input File: (file content)
"""
1 command1 parm1a parm1b parm1c
2 command2 parm2a parm2b parm2c
3 command3 parm3a parm3b parm3c
"""
li = []
for line in open('list_of_commands.txt'):
try:
lis = line.split()
li.append([int(lis[0]),lis[1], lis[2:]])
except IndexError:
pass # do nothing if empty lines are found
print li
输出
[1, 'command1', ['parm1a', 'parm1b', 'parm1c']]
[2, 'command2', ['parm2a', 'parm2b', 'parm2c']]
[3, 'command3', ['parm3a', 'parm3b', 'parm3c']]
让我知道我是否遗漏了什么。
由于