有四个文件,a.txt
,b.txt
,c.txt
,d.txt
。python中的字符串匹配
每个文件只有一列数据,其中包含商店/商场/餐馆等的名称。实际上,它们只是名称。
我需要一个程序,可以将a.txt
中的名称与其他三个文件(b.txt
,c.txt
,d.txt
)中的名称进行匹配。通过匹配,我们的意思是程序应该能够将a.txt
中的一行标记为匹配,前提是它包含三个其他文件中任何一个文件中可用的名称。这些比赛需要智能化,即如果某个文件有餐厅,而另一个文件则不应该匹配。所以我们需要提出一些启发式的方法来做一个很好的匹配。
我想要完美的匹配例如如果a.txt
具有以下
Ivan Restaurant - Bukit Timah Road, Singapore
Ivan Restaurant - Bukit Timah Road, 12345 Singapore
Ivan Restaurant - Bukit Timah Road, 12345
Ivan Restaurant - 12345, Singapore
Ivan Restaurant Bukit Timah Road, Singapore
Ivan Restaurant Bukit Timah Road, 12345 Singapore
Ivan Restaurant Bukit Timah Road, 12345
Ivan Restaurant 12345, Singapore
Ivan Restaurant (Bukit Timah Road, Singapore)
Ivan Restaurant (Bukit Timah Road, 12345 Singapore)
Ivan Restaurant (Bukit Timah Road, 12345)
Ivan Restaurant (12345, Singapore)
或“伊万餐厅” 和b.txt
或c.txt
或d.txt
任何这样的变化有任何以下
Ivan
Ivan restaurant
然后, 只有完整伊万餐厅之一应该匹配。但是,如果b.txt
或c.txt
或d.txt
中没有“Ivan餐厅”,但只有Ivan存在,那么您会从a.txt
中删除像餐厅这样的常用词,然后尝试匹配。
我希望你明白。类似的商店,建筑物,商场等。这就是我的启发式意思。
如果我理解你的描述正确你可以建立一个'设置()'用b.txt'的'所有的话,'c.txt' ,和'd.txt',然后遍历'a.txt'的单词并检查它是否属于这个集合的一部分。如果您需要了解有关该单词的更多信息,则可以使用“地图”,该地图从单词映射到相关信息,例如,无论这个词是在“b.txt”还是来自哪一行。 – 2011-12-18 08:02:53
你能给我这个代码吗? – Anoop 2011-12-18 08:21:34
@ user1077645 - 此网站用于解决您编写的代码时遇到的问题。如果您希望有人为您从头开始编写解决方案,请尝试[Elance](https://www.elance.com/)或[vWorker](http://www.vworker.com/)或其中一种其他此类服务。 – Blair 2011-12-18 09:20:00