2010-11-25 30 views
0

区切り文字として"},{"を使用して文字列を分割したいとします。私はいろいろ試しましたが、どれもうまくいきません。Pythonでの文字列区切り

string="2,1,6,4,5,1},{8,1,4,9,6,6,7,0},{6,1,2,3,9},{2,3,5,4,3 " 

このようなものに分割して:Pythonのコンソールではなく、私はそれが動作しません。この操作を行うにするPythonスクリプトを記述する場合

2,1,6,4,5,1 
8,1,4,9,6,6,7,0 
6,1,2,3,9 
2,3,5,4,3 

string.split("},{")作品。

+2

コンソールでは動作しますが、スクリプトでは動作しません。あなたのスクリプトはどのように見えますか? –

+0

、Pythonコンソール >>> string = "{{2,4,5}、{1,9,4,8​​,6,6,7}、{1,2,3}、{2,3 }} "" >>> string。スプリット( "}、{") も細かい作品を交換するが、スクリプトでも同じことがそうでないときには デフconvert2list(文字列): 文字列= string.strip() 文字列=文字列[2: len(string)-2] .split( "}、{") – anupash

+0

関数が何かに代入するのではなく、値を返すようにしてください。また、出力が実際に画面に表示されるようにするには、 'print'を呼び出す必要があります – DGH

答えて

0

あなたは段階的にそれを行うことができます:カンマで

  1. スプリット "{...}" の文字列を取得します。
  2. 先頭と末尾の中カッコを削除します。

これはPythonicまたは効率的ではないかもしれませんが、一般的で実行可能です。

11

string.split("},{")の結果を新しい文字列に割り当てる必要があります。例:

私はそれがコンソールではなくスクリプトでは機能すると思う理由だと思います。コンソールでは戻り値を出力するだけですが、スクリプトでは戻り値を確実に使用したいと考えています。

+0

そして答え! – RSolberg

+0

正しい答えですが、string2はそれがリストであるとみなして、悪い変数名である可能性があります。 – tom

2

あなたはreturnの文字列を呼び出し元に戻す必要があります。 stringパラメータに代入しても、呼び出し元の変数は変更されないため、変更は失われます。

def convert2list(string): 
    string = string.strip() 
    string = string[2:len(string)-2].split("},{") 

    # Return to caller. 
    return string 

# Grab return value. 
converted = convert2list("{1,2},{3,4}") 
0

Iは、スクリプトの引数の形で、コンソールからの入力を取っていた....

だから{{2,4,5}、{1などの入力を取っていた場合、9,4,8​​,6,6,7}、{1,2,3}、{2,3}}それはarg [1]で正しく来ていなかったので、分割は基本的に空に分割されていました文字列...

0

私は(Pythonの2.7で)スクリプトファイルから以下のコードを実行した場合:

文字列= "2,1,6,4,5,1}、{8,1 、4,9,6,6,7,0}、{6,1,2,3,9}、{2,3 、5,4,3 "

印刷のstring.Split("}、{ ")

そしてIが得た出力は:

[ '2,1,6,4 、5,1 '、' 8,1,4,9,6,6,7,0 '、' 6,1,2,3,9 '、' 2,3,5,4,3 ']

そして、以下のコードは、正常に動作します:

string="2,1,6,4,5,1},{8,1,4,9,6,6,7,0},{6,1,2,3,9},{2,3,5,4,3 " 
def convert2list(string): 
    string=string.strip() 
    string=string[:len(string)].split("},{") 
    print string 
convert2list(string) 
関連する問題