Найти - Пользователи
Полная версия: Буквы и/или числа в строке
Начало » Python для новичков » Буквы и/или числа в строке
1 2 3 4 5 6
Isem
Ну если следовать строго вашему заданию и не применять никаких непонятных символов, тогда после небольшой корректировки вашего кода получится так:
x='ZZZZZxxxAA'
i=j=1
while j<=len(x):
if j<len(x) and x[j-1]==x[j]:
i+=1
else:
print( x[j-1], i )
i=1
j+=1
grok
Или так:
x='ZZZZZxxxAAk'
i=1
j=0
while j < len(x)-1:
if x[j]==x[j+1]:
i+=1
else:
print x[j], i
i=1
j+=1
print x[j], i
breidos
Наконец та желаемый результат:
x='ZZZZZxxxAA'
i=j=1
while j<=len(x):
if j<len(x) and x[j-1]==x[j]:
i+=1
else:
print x[j-1]+str(i),
i=1
j+=1
>>>
Z5 x3 A2

Спасибо всем кто помагал, теперь мне нужно сделать строку вида - Z5 x3 A2 ->>>> ZZZZZxxxAA. Щас вот буду дальше думать :)
Isem
Не будем мешать :)
Ed
Может так пойдет?
inp = 'ZZZZZxxxAA'
for i in set(inp):
print "%s%d " % (i, inp.count(i)),
Isem
Хорошо бы еще все таки сохранить порядок символов, в котором они появляются в строке.
Ed
Isem
Хорошо бы еще все таки сохранить порядок символов, в котором они появляются в строке.
Любой каприз :)
inp = 'ZZZZZxxxAA'
processed = []
for i in inp:
if i not in processed:
print "%s%d " % (i, inp.count(i)),
processed.append(i)
breidos
Ребята, в посте #13 у меня ответ выходит такой: Z5 x3 A2 (с пробелами). Подскажите как убрать пробелы.
И еще один вопрос: вот есть такая штука как input() - вводить можно только числовые значения? Ато я ввожу текст и он ругается.
Isem
Ed
Любой каприз
Код:

inp = ‘ZZZZZxxxAA’
processed =
for i in inp:
if i not in processed:
print “%s%d ” % (i, inp.count(i)),
processed.append(i)
Или что-то типа этого:
import re
x = 'ZZZZZxxxAA'
for ch in re.findall(r'(.)\1*', x ):
print( "{}{}".format( ch, x.count(ch)), end = '' )
Вывод без пробелов.

То же самое:
print( ''.join( ch + str(x.count(ch)) for ch in re.findall(r'(.)\1*', x ) ) )
Хотя, если ловить все группы идущих подряд одинаковых символов как независимые (XXXfffrXXXX), тогда вот так:

print( ''.join( ch+str(len(s)) for s, ch in re.findall(r'((.)\2*)', x ) ) )
o7412369815963
Для группировок есть groupby
from itertools import groupby
inp = 'ZZZZZxxxAA'
print ''.join( k+str(len(list(x))) for k,x in groupby(inp) )
>> Z5x3A2
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB