2017-09-13 2 views
3

に1を先行と異なる文字列は、私は、ユーザーから取得した文字列を分割したいです。ここでスプリット文字は、Python

は、私がこれまで持っているものです。

UserInput = input("hi enter a string:") 

Groups = [] 

for x in range(len(UserInput)): 
    if (UserInput[x] != UserInput[x-1]): 
     print(UserInput[x]) 

あなたは私がここに欲しいものを理解しない場合の例である: は、ユーザーが入力したと言う:b444Mrr-- < < <] 0 私は出力したいです画面上:B、444、M、RR、 - 、< < <、]、0

答えて

3

あなたが観察し、itertools.groupby()を使用することができます。

与えられた例と
import itertools 

user_input = input("Please enter a string:") 
groups = [] 

for _, group in itertools.groupby(user_input): 
    groups.append(''.join(group)) 

print('Here is that string split when a character changes: %s' % ', '.join(groups)) 

使用例:

Please enter a string: b444Mrr--<<<]0 
Here is that string split when a character changes: b, 444, M, rr, --, <<<, ], 0 

N.B. Pythonでを使用すると、Unicode値は、各文字のために異なっており、コードの下のようなさまざまな文字のための比較のために使用することができるというロジックを使用することができますsnake_caseではなくTitleCase(あなたの試みで何をしているか)、またはcamelCase

+1

をうわー、これは素晴らしいです – user79868855

1

を使用します: -

inp=input("Enter String ") 

prev=ord(inp[0]) 
str1=inp[0] 
str=inp[1:] 
for i in str: 
    curr=ord(i) 
    if prev==curr: 
     str1=str1+i 
    elif prev!=curr: 
     print(str1) 
     prev=curr 
     str1="" 
     str1=i   
print(str1) 

例発揮します -

Enter String b444Mrr--<<<]0 
b 444 M rr -- <<< ] 0 
関連する問題