2014-11-19 4 views
-4

Мне нужно написать код на Python, который сможет определить, есть ли какой-то символ в строке и заменить его другим символом моего выбора. например, мне нужно заменить все гласные в строке на «$ @», поэтому после того, как строка «hello world» пройдет через код, она превратится в «h $ & @ ll $ & @ w $ & @ rld ». Кто-нибудь знает, как это сделать, используя очень простой python и не все существующие функции? спасибоPython - поиск и замена гласных в строке

+0

"нет заранее существующих функций" бит звучит как домашнее задание. –

+1

'print (''. Join ((c, '$ & @') [c.lower() в 'aeiou'] для c в 'hello world'))'. А теперь иди объясните это своему учителю. – Matthias

+0

Что именно вы подразумеваете под «предварительно существующими функциями»? –

ответ

0

Через re.sub,

>>> import re 
>>> re.sub(r'[aeiou]', r'$&@', "hello world") 
'h$&@ll$&@ w$&@rld' 
+0

Это похоже на ранее существовавшую функцию. – DSM

+0

@DSM я не понял вашу точку зрения. –

+0

Можете ли вы опубликовать причину понижения? –

1

Используйте re модуль:

import re 
string = "Hello world" 
print(re.sub("a|e|i|o|u", "xx", string)) 

отпечатывается

>>> Hxxllxx wxxrld 
1

Первый метод

>>> "".join(map(lambda x: '$&@' if x in "aeiou" else x, "hello world")) 
'h$&@ll$&@ w$&@rld' 

Второй метод

>>> s = "hello world" 
>>> for ch in s: 
...  if ch in "aeiou": 
...    s = s.replace(ch,'$&@') 
... 
>>> s 
'h$&@ll$&@ w$&@rld 
+0

Я ставлю, что ваш второй метод - это то, что ищет его учитель. –

+1

@RickTeachey, последний раз, когда я смотрел str.replace, была функция/метод –

+1

так, что это 'for',' if', 'in',' = ','() ',' '' ',', ',' .' и ':'. это был не очень хороший вопрос. –

1

без использования re или str.replace:

def trans(s): 
    rpl = "$&@" 
    res = "" 
    for letter in s: # loop over the string s 
     if letter in {"a","e","i","o","u","A","E","I","O","U"}: # if any letter in vowels 
      res+= rpl # add replacement substring 
     else: 
      res+= letter # else just add the letter 
    return res 

Чтобы просто вывести слово, которое мы могли бы удалить конкатенацию:

import sys 
def trans(s,rpl): 
    for letter in s: # loop over the string s 
     if letter in {"a","e","i","o","u","A","E","I","O","U"}: # if any letter in vowels 
      sys.stdout.write(rpl) 
     else: 
      sys.stdout.write(letter) 
(trans("hello world","$&@")) 
+1

@RickTeachey, если нужен только вывод, мы могли бы удалить много кода. –

Смежные вопросы