2017-04-05 19 views
0

のリストの中に浮動小数点数への参加:Pythonの - 私はこのような文字列のリストを持っている文字列

L = [['(', '11', '.', '253920135318836', '-', '12' ')', '+', '3','.','12']] 

上記のように、私はリストをプリントアウトしていたときに、現在、それがプリントアウトされました「(」 。

[['(', '11.253920135318836', '-', '12' ')', '+' ,'3.12']] 

が、作るのに苦労しています:、「11」と、リストの残りの部分はプリントアウトされていない、これは私が形にそれを作ることができるようにしたいと固定することができる方法はありますそれでこのように ありがとう!

+0

何?リストを印刷すると、リストはどのように印刷されませんか?あなたは何をしているのですか?コードを私たちに教えてください。 – timgeb

+1

あなたは文字列のリストである1つの要素を持つリストを持っています。 – timgeb

+0

あなたは何をしたいですか?浮動小数点数を結合するか、浮動小数点数の文字列を削除しますか? –

答えて

1

私は1つの文字列に一緒に参加するだろうし、括弧でそれを分割し、+/-

>>> [filter(None, (re.split('([\(\)\+\-])', ''.join(sublist))) for sublist in L] 
[['(', '11.253920135318836', '-', '12', ')', '+', '3.12']] 

誰か:@StevenRumbalskiが指摘したように

>>> import re 
>>> L = [['(', '11', '.', '253920135318836', '-', '12' ')', '+', '3','.','12']] 

>>> [re.split('([\(\)\+\-])', ''.join(sublist)) for sublist in L] 
[['', '(', '11.253920135318836', '-', '12', ')', '', '+', '3.12']] 

は、私たちは、空の値をフィルタリングすることができます正規表現を使うと、より良い提案が得られるかもしれません。

1

彼らは反復しながらリストを変更すべきではないと言っています。時にはそれはまさにあなたがやりたいことです。このコードでピリオドが確認されると、次のリストアイテムと前のアイテムを結合し、次のアイテムを2回処理しないようにトリムします。サブリストを処理するための再帰呼び出しを追加すると、グルーコードが取得されます。

L = [['(', '11', '.', '253920135318836', '-', '12' ')', '+', '3','.','12']] 

def glue_floats(alist): 
    try: 
     newlist = alist[:] 
     for i, val in enumerate(newlist): 
      if isinstance(val, list): 
       # recursively handle sublists 
       newlist[i] = glue_floats(val) 
      elif val == '.': 
       # combine -1 to +1 inclusive and shrink for next iteration 
       newlist[i-1:i+2] = [''.join(newlist[i-1:i+2])] 
    except IndexError: 
     raise ValueError('float missing component') 
    return newlist 

print(glue_floats(L)) 
0
lst = ['(', '11', '.', '253920135318836', '-', '12' ')', '+', '3','.','12'] 
res =[] 
temp = '' 
for i in ''.join(lst): 
    if i in '+-*/()': 
     if temp:res.append(temp) 
     res.append(i) 
     temp = '' 
    else: 
     temp += i 
res.append(temp) 

print res 

['(', '11.253920135318836', '-', '12', ')', '+', '3.12'] 
関連する問題