2015-10-22 2 views
-1

У меня есть список номеров, которые я хочу заменить их версиями слов.Поиск номеров в списке и замена другим

Это код, который я до сих пор:

phone_num = fixPhoneNum(original) # 067-892-3451 
def getWordForm(phone_num): 
    words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 
      'eight', 'nine'] 

    a = list(phone_num) 
    for n,i in (a): 
    if i==1: 
     a[n]=words[1] # etc.. 

Как бы идти о замене номера из одного списка с другим?

Редактировать Я завершил перевод с номера на слова, но слова не имеют пробелов между ними. twosixeight-etc ..

Как я могу сделать так, чтобы каждое слово заканчивалось пробелом? Я вставляю и помещаю после каждого в список слов?

ответ

1

Попробуйте это, дайте мне знать, как она идет

phone_num = fixPhoneNum(original) # 067-892-3451 
def getWordForm(phone_num): 
    words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 
      'eight', 'nine'] 
a = list(phone_num) 
for n,i in (a): 
if i==1: 
    a[n]=words[1]+' ' 
+0

Это работает! Я собирался добавить пробелы к элементам в списке слов, но это гораздо приятнее посмотреть. –

+1

@SaigonoAkuma рад, что я мог бы помочь, отметить как ответ :) –

+0

Но теперь нет пробелов перед дефисами ex. шесть четыре один - девять девять ноль. Как я могу это исправить? –

0

Рабочий пример # 1 - Испытано с Python 2.6.9 и 2.7.10 и 3.2.5 и 3.4.3 и 3.5.0

def getWordForm(original): 
    a = [] 
    words = 'zero,one,two,three,four,five,six,seven,eight,nine'.split(',') 
    for i in original: 
     a.append(words[int(i)]) if i.isdigit() else a.append(i) 
    return ' '.join(a) 

print(getWordForm('067-892-3451')) 

Выходной

zero six seven - eight nine two - three four five one 


Рабочий пример # 2 - Испытано с Python 2.6.9 и 2.7.10 и 3.2.5 и 3.4.3 и 3.5.0

def getWordForm(original): 
    words = 'zero,one,two,three,four,five,six,seven,eight,nine'.split(',') 
    a = map(lambda num: words[int(num)] if num.isdigit() else num, original) 
    return ' '.join(a) 

print(getWordForm('067-892-3451')) 

Выход

zero six seven - eight nine two - three four five one 
1

Мы можем используйте map и lambda для достижения аналогичной работы.

phone_num = fixPhoneNum(original) # 067-892-3451 
words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 
    'eight', 'nine'] 
num_in_words = map(lambda num: words[int(num)] if num.isdigit() else num, phone_num) 
print (''.join(num_in_words)) 

Выход

zerosixseven-eightninetwo-threefourfiveone