在列表中查找数字并替换为另一个

时间:2015-10-22 02:57:14

标签: python-3.x

我有一个数字列表,我想用他们的单词版本替换。

这是我到目前为止的代码:

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-等

我怎样才能使每个单词以空格结尾?我是否在单词列表中插入并留空?

3 个答案:

答案 0 :(得分: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]+' '

答案 1 :(得分:1)

我们可以使用maplambda来完成类似的工作。

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

答案 2 :(得分:0)

工作示例#1 - 使用Python 2.6.9 2.7.10 <进行测试/ strong>和 3.2.5 3.4.3 3.5.0 < / EM>

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 <进行测试/ strong>和 3.2.5 3.4.3 3.5.0 < / EM>

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