2016-10-10 9 views
0

は、あなたが持っているとしましょう:置換と分割の方法を使わずに特定の文字を含めずに文字列をリストに変換する方法は?

x = "1,2,13" 

、あなたが達成したい:

list = ["1","2","13"] 

あなたは、分割せずにそれを行うとメソッドを置き換えることはできますか?

list=[] 
for number in x: 
    if number != ",": 
     list.append(number) 

print(list) # ['1', '2', '1', '3'] 

が、ここではその一桁

+0

What'veを? – Li357

+0

大丈夫私は質問に入れます – BitByBit

+0

質問に入れよう – Li357

答えて

2

はそれがitertoolsを使用して整数を想定して使用しての方法である場合にのみ動作します:ここで

>>> import itertools 
>>> x = "1,88,22" 
>>> ["".join(g) for b,g in itertools.groupby(x,str.isdigit) if b] 
['1', '88', '22'] 
>>> 

はAですが、私が試してみました何

従来のループを使用するメソッド:

>>> digit = "" 
>>> digit_list = [] 
>>> for c in x: 
... if c.isdigit(): 
...  digit += c 
... elif c == ",": 
...  digit_list.append(digit) 
...  digit = "" 
... else: 
... digit_list.append(digit) 
... 
>>> digit_list 
['1', '88', '22'] 
>>> 
あなたはおそらく正規表現を使用したい、現実の世界で

、...

+0

私はsplitメソッドがこの(従来の)式をバックグラウンドで持っていると思いますか? – BitByBit

+0

分割メソッドはCで実装されています(Cpythonで)。論理構造は類似している可能性が高いが、多くの点で最適化されている可能性が高い。私はソースを調べていません。 –

+0

"else"にはif文がありません。インデントでわかることができ、これをコピーしてエディタに貼り付けることを試みました。あなたのコードのロジックから、それはリストに最後に1つ追加することを意味するのですか?スタンドアロンの「else」ステートメントを持つことはどういう意味ですか? – BitByBit

2

あなたは正規表現を使用できます:あなたは*みました*

>>> import re 
>>> re.findall('(\d+)', '123,456') 
['123', '456'] 
+1

は見えませんでした私の投稿前にあなたの正規表現の解決策::) – idjaw

+0

@DaveBensonPhilipsうわー、この問題を解決する方法はたくさんあります。再については決して考えなかった。しかし、意味があります。 – BitByBit

関連する問題