2015-07-25 2 views
1

Привет ребята Я разработчик Java, но я новичок в Python, у меня есть этот мир Java код, который я хотел бы перевести в питоне:разделить цифры и символы из обычного текста

private static String split(String str) { 
     List<String> output = new ArrayList<String>(); 
     Matcher match = Pattern.compile("[0-9,+]+|[a-z]+|[A-Z]").matcher(str); 
     while (match.find()) { 
      output.add(match.group()); 
     } 
     String result=""; 
     for (String s:output){ 
      result+=s+" "; 
     } 
     return result; 
    } 

так например, если вход: выход «aaaa + 1» становится: «aaaa +1».

Я уже пытался использовать:

def split(nome): 
    r = re.findall('\d+|.\D+', nome) 
    #m = r.match(nome) 
    print(r) 

, но не принимает во внимание символ (+).

здесь другие примеры:

auhsuahsAsaasaA+19090 ---> auhsuahsAsaasaA +19090 
+67433998AAAAAAA ---> +67433998 AAAAAAA 
ARENA-89   ---> ARENA -89 

Можете ли вы помочь мне найти решение?

+1

"аааа + 1" выход стать: "аааа +1" Это не ясно для меня! – Clodion

+0

Я хотел бы разделить нормальный текст с символов и цифр, здесь другие примеры: auhsuahsAsaasaA + 19090 ---> auhsuahsAsaasaA +19090; + 67433998AAAAAAA ---> +67433998 AAAAAAA; – navy1978

+1

Вы должны ввести новые примеры в свой вопрос (не здесь). – Clodion

ответ

2

Попробуйте эту команду re.findall, которая соответствует всем непрерывным алфавитам и номерам (с опциональными - или +).

re.findall(r'[A-Za-z]+|[+-]?\d+', s) 

Пример:

>>> import re 
>>> re.findall(r'[A-Za-z]+|[+-]?\d+', '"AAAA +2"') 
['AAAA', '+2'] 
>>> re.findall(r'[A-Za-z]+|[+-]?\d+', 'auhsuahsAsaasaA+19090') 
['auhsuahsAsaasaA', '+19090'] 
>>> re.findall(r'[A-Za-z]+|[+-]?\d+', '"AAAA +2"') 
['AAAA', '+2'] 
+0

спасибо, но это не работает здесь: «aaaaa + 32» -> ['aaaaa', '+', '32'] – navy1978

+0

проверить сейчас ....... есть ли какие-либо слова символы, отличные от '+', '-'? –

+0

;) Спасибо! это работает!!!! – navy1978

0

Без re модуль

def divide(text): 
    local_text=list(text) 
    for i in range(1, len(local_text)): 
     if local_text[i].isspace() or local_text[i-1].isspace(): 
      continue 
     elif local_text[i-1].isalpha() != local_text[i].isalpha(): 
      local_text[i-1] += ' ' 
    return ''.join(local_text) 

print(divide('auhsuahsAsaasaA+19090 +67433998AAAAAAA ARENA-89')) 
... 
auhsuahsAsaasaA +19090 +67433998 AAAAAAA ARENA -89 
Смежные вопросы