0

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

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

明显地

S1 != S2

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

4

2 回答 2

1

该模块可能可以帮助您:

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

于 2012-08-01T16:53:04.463 回答
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_map的、CosmicComputer 链接的模块可能有用。

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

于 2012-08-01T16:56:24.547 回答