将数字字符串与数字字符串进行比较

时间:2012-08-01 16:43:39

标签: python

我有两个字符串。一个包含另一个包含单词的数字。我无法预测哪一个的数量和数量的大小。

S1  = "thirteen things that don't make sense"
S2 = "13 Things That Don't Make Sense"

明显

S1 != S2

在python中测试两个字符串包含相同信息的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

此模块可能可以帮助您:

http://sourceforge.net/projects/pynum2word/

答案 1 :(得分:1)

您可以创建一个字符串映射,该字符串应该被视为等同于其他字符串,然后转换每个句子以删除大小写差异并在比较之前使用映射替换单词,例如:

S1 = "thirteen things that don't make sense"
S2 = "13 Things That Don't Make Sense"
eq_map = {'one': '1', 'two': '2', 'thirteen': '13'}

def convert(s):
    s = s.lower()
    return [eq_map.get(w, w) for w in s.split()]

assert convert(S1) == convert(S2)

这里的困难部分来自于创建一个全面的eq_mapCosmicComputer linked可能有用的模块。

您可能还想在此处执行操作以删除标点符号,您可以通过向s = re.sub(r'[^\w\s]+', '', s)添加convert()之类的内容来完成此操作。