2016-08-27 14 views
0

"week32_Aug_24_2016"のような文字列があります。 "week32_2016_Aug_24"のようにこの文字列を変更したい これを試しました。分割後にPython文字列をフォーマットする

str = "week32_Aug_24_2016" 
wk = str.split('_') 
newstr = wk[0]+" "+wk[3]+" "+wk[1]+" "+wk[2] 

私の期待される出力は "week32 2016 Aug 24"です。 私はすでにそれを持っていますが、私はこれを行うためのより良い方法があることを知りたいです。私は長い文字列を持っていると仮定し、分割値の10は、これは非常に長い道のりです。だから私は、分割された値を整理するより良い方法を知りたい。おかげで....

+1

あなたは正確に分割値の '長い文字列なしで何を意味するのは、10 'である??どのようにして4つ以上のセグメントができますか? – jbsu32

+0

あなたは2つの異なる出力 'week32_2016_Aug_24'と' week32 2016 Aug 24'を質問に掲示しました..明確にして、長い文字列と期待される出力を持つ例を与えます... – Sundeep

答えて

4

あなたは、単にこのように、str.split()str.join()の両方を利用することができます。また

string = "week32_Aug_24_2016" 
order = (0, 3, 1, 2) 
parts = string.split('_') 

new_string = ' '.join(parts[i] for i in order) 

は、私がビルトインstrクラスシャドウイングを避けるためにstringにあなたの変数strと改名ことに注意してください。

+0

これは最高の方法です... – SumanKalyan

0
str = "week32_Aug_24_2016" 
wk = str.split('_') 
i=0; 
newstr=""; 
while(i<len(wk)): 
    newstr=newstr+wk[i]+" " 
    i=i+1 
print newstr 

そういうもの。途中で最後の文字列を保持したい場合は、それを行うことができます。

0
>>> import re 
>>> string = "week32_Aug_24_2016" 
>>> re.sub(r'_(.*)_(.*)_(.*)', r' \3 \1 \2', string) 
'week32 2016 Aug 24' 
0

あなたは(使用str.splitを作ることができる)と形式()と同様:

str = "week32_Aug_24_2016" 
wk = str.split('_') 
newstr = "{} {} {} {}".format(wk[0], wk[3], wk[1], wk[2])