Python 比较db和csv文件中字符串的拼写
我正在从CSV文件映射一个表,并将一些值与数据库中的键进行比较,以便获取另一个值 当人们编写CSV文件时,可能会出现拼写错误,因此有时在数据库中找不到某些值 例如,person写道:“贡献其他”,db有一个“贡献其他”键 我所做的是删除所有空格和破折号,并将CSV中的值都小写,并在从db创建表时转换这些值。以下是一些方法:Python 比较db和csv文件中字符串的拼写,python,sql-server,Python,Sql Server,我正在从CSV文件映射一个表,并将一些值与数据库中的键进行比较,以便获取另一个值 当人们编写CSV文件时,可能会出现拼写错误,因此有时在数据库中找不到某些值 例如,person写道:“贡献其他”,db有一个“贡献其他”键 我所做的是删除所有空格和破折号,并将CSV中的值都小写,并在从db创建表时转换这些值。以下是一些方法: def get_trade_type_mappings(self): sql = """ SELECT Code, TradeTypeID FROM
def get_trade_type_mappings(self):
sql = """
SELECT Code, TradeTypeID
FROM dbo.TradeType"""
with self.job.connect(database='rap') as conn:
trade_types = etl.fromdb(conn, sql)
trade_types.convert('Code', lambda x: x.replace(' ', '').replace('-', '').lower())
return dict(trade_types)
def fetch_trade_type_id(self, trade_type):
# Prevents case and space difference causing issues
trade_type = trade_type.replace(' ', '').replace('-', '').lower()
if trade_type == 'cover':
trade_type = 'covershort'
elif trade_type == 'short':
trade_type = 'sellshort'
return self.get_trade_type_mappings.get(trade_type)
我正试图考虑任何其他可能出现错误的情况
我所写的将适用于以下内容:
“其他贡献”与“其他贡献”
但不是为了:
“贡献他人”与“贡献他人”
你认为还有什么有用的吗?我见过一个Levenshtein距离法来比较两个单词的拼写。。。也许我可以把它整合起来 你希望得到什么样的答案?解决可能出现的边缘问题的想法,比如我在底部列出的问题。这对这个网站来说太广泛了。有很多可能的边缘情况。那Otherx呢?或者其他无数接近概率中的任何一个。当您扩展可能的胖手指结果列表以覆盖创建两条可能路径的边缘情况时会发生什么?Levenshtein,SOUNDEX都是可能的帮手,但并没有什么是万无一失的,因为你们试图让非常接近的弦被平等对待。很公平,无论如何谢谢。