在Python中使用int(),split()和鼻子测试时遇到问题

时间:2018-12-12 18:11:23

标签: python string dictionary integer nose

这是我的第一篇文章。

我有一段代码正在尝试进行鼻子测试。

有一个非常简单的修复程序可以使此代码运行,即将整数放在引号中。

我要完成的工作是拥有一个在字典中使用字符串和整数的字典。这是我的带有扫描功能的字典。

lexicon = {
    '1234': 'number',
    3: 'number',
    91234: 'number'
}

def scan(sentence):
    results = []
    words = sentence.split()
    for word in words:
        word_type = lexicon.get(word)
        results.append((word_type, word))
    return results

以上代码已导入到我的测试文件中,其中包含此代码块。

from nose.tools import *
from ex48 import lexicon
def test_numbers():
    assert_equal(lexicon.scan('1234'), [('number', '1234')])
    result = lexicon.scan('3 91234')
    assert_equal(result, [('number', 3),
                      ('number', 91234)])

“ 1234”部分运行正常。

但是,代码中是否可以使用int(),以便在(3 91234)上运行split()时,它将返回两个整数并正确使用我的词典词典来调用适当的值?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用isnumeric()方法检查字符串是否为数字,然后再转换为int。

lexicon = {
    '1234': 'number',
    3: 'number',
    91234: 'number'
}

def scan(sentence):
    results = []
    words = sentence.split()
    for word in words:
        if word.isnumeric(): #change
            word = int(word) #change
        word_type = lexicon.get(word)
        results.append((word_type, word))
    return results

请注意,进行此更改后,您需要将所有数字键存储为整型,否则将不会获取存储为字符串的数字键。