帮助Python字符串

时间:2010-01-13 09:51:20

标签: python string

我有一个从文本文件中读取命令的程序

例如,命令语法如下,是一个字符串

'index command param1 param2 param3'

参数数量从0到3可变 index是一个整数 command是一个字符串 所有参数都是整数

我想拆分它们,以便我有一个如下列表

[index,'command',params[]]

这样做的最佳方式是什么?

由于

7 个答案:

答案 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)

  1. 打开文件
  2. 阅读每一行并通过line.split( )
  3. 解析该行

答案 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']]

让我知道我是否遗漏了什么。

由于