Найти - Пользователи
Полная версия: Буквы и/или числа в строке
Начало » Python для новичков » Буквы и/или числа в строке
1 2 3 4 5 6
sypper-pit
breidos
breidos
input() - вводить можно только числовые значения? Ато я ввожу текст и он ругается.
raw_input
Ed
Кстати, а какой из вариантов нужен автору топика? Считать в строке в целом или по группам?
breidos
Ребята, вот пытаюсь сделать такое: строку вида - Z5x3A2 преобразовало в ZZZZZxxxAA. Тут нюанс в том, что числа могут быть 2/3/… значными, как бы это отловить?


Вот пользуюсь таким кодом, но он ругается после того как пройдет 2 символа строки
x=raw_input('Введите строку: ')
i=0
j=1
while j<=len(x):
if type(x[i])==type(x[i+1]):
a=x[i]*int(x[i+1])
print a,
i+=1
j+=1
sypper-pit
по пробуй на регулярных выражениях решить …
py.user.next
>>> import re
>>> sa = 'Z15x3A12'
>>> sb = ''.join([c * int(n) for c, n in zip(re.findall('[^\d]+', sa), re.findall('\d+', sa))])
>>> sb
'ZZZZZZZZZZZZZZZxxxAAAAAAAAAAAA'
>>>
Isem
Оба выражения можно объединить в одно:
sb = ''.join(c * int(n) for c, n in re.findall( r'([^\d]+)(\d+)', sa))
Ed
Вот еще одна реализация этой же идеи:
''.join(m[0]*int(m[1:]) for m in re.findall('.\d+', sa))
А вот извращение на эту же тему:
eval(re.sub('(.)(\d+)', r'"\1"*\2+', sa)[:-1])
PS: Упс, меня опередили :)
Isem
Тогда еще одно “извращение”:
re.sub('(.)(\d+)', lambda x: x.groups()[0]*int(x.groups()[1]), sa)
Или чуток короче:
re.sub('.\d+', lambda x: x.group()[0]*int(x.group()[1:]), sa)
breidos
x="Z15x3A2"
i=0
j=1
while j<=len(x):
if type(x[i])==str:
print 'strrrrrr',
i+=1
else:
print 'intttt',
i+=1
j+=1
Вот я пытаюсь вывести к какому типу относятся i-ый элемент строки. Но тут он выводит:
>>>
strrrrrr strrrrrr strrrrrr strrrrrr strrrrrr strrrrrr strrrrrr
>>>
В каком месте я ошибся?
Chern
x="Z15x3A2"
i=0
while i<len(x):
try:
if int(x[i]):
print 'int'
except:
print 'str'
i += 1
Ошибка в том, что x - подстрока
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