2016-10-15 3 views
1

OBSの情報をフォーマットする:私は、Python 3.5.2に取り組んでいると私は、標準のシェルとIDLEPythonで文字列を使用した作業:非常に特定の方法で

こんにちはみんなを使用し、私が最も困難な課題の一つだと思います私はPythonでプログラミングするときに文字列を扱うことがあります。助けることができる人がいますか?

私が頻繁に直面する問題の1つは、文字列を変換して正しく使用できることです。例えば:私は結果で、私は次の操作を行うことができるだろう、という方法で、この文字列を変換するにはどうすればよい

#consider I have the following string I want to work with: 

my_input = 'insert 3 ["psyduck", 30]!!!insert 10 ["a nice day at the beach", 100]!!!find 3!!!find 10'

1 - 区切り部分文字列を次のような変数に変換します。

command = 'insert' 

node = '3' #or the int 3 

list = '["psyduck", 30]' 

2 - または何とか最後にこれを行うために私を可能にする他のソリューション:

listOfCommands = [['insert', '3', '["psyduck", 30]'], ['insert', '10', '["a nice day at the beach", 100]'], ['find', '3'], ['find', '10']] 

私は次の操作を実行するために、このリストを必要とする:

for entry in listOfCommands: 
    if entry[0] == 'insert': 
    #I will execute a part of the program  

    elif entry[0] == 'update': 
    #execute something else 

    elif entry[0] == 'find': 
    #execute something else 

問題は、I入力に表示される内容(コマンドの数または追加しなければならない情報のサイズ)を知らないでください。 [コマンドを保存するか、更新する必要があるコマンド、保存または更新する必要のある情報]または[コマンド、a 'ノード'私は見つけるか削除する]とブロックは 'で区切られます!!!

私はメインプログラムの周りを歩くことができますが、正しく動作させるためには、この入力をこのような特殊な方法でフォーマットする必要があります。

答えて

3

たぶん、このような何かが動作します:

commands = my_input.split('!!!') 
my_commands = [c.split(' ', 2) for c in commands] 

splitメソッドの第2引数は、あなたがそれが文字列を分割する方法を何回もそれを伝えます。

+0

ええ、入力の複雑さによっては、この小さなハックがうまくいくかもしれません。 –

+0

リストを取得するには、常に 'ast.literal_eval'を使用できます。 –

+0

ええ、それは対応するコマンドの仕事なので、第3引数を解析することはできませんでしたが、おそらく 'json'または' ast.literal_eval'のいずれかが機能します。 –

関連する問題