如何基于单词对字符串进行标记化

2024-09-28 20:52:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想根据python3.6中已知单词的列表将变量名转换为业务友好的名称。你知道吗

我的已知单词列表如下所示,即第一个元素是已知单词,第二个元素是它的友好名称:

Acct,Account
Account,Account
Num,Number
Number,Number
Payee,Payee
Pymt,Payment
Type,Type

我的变量是这样的:

ACCOUNTNUM
ACCT_NUM
ACCTNUM
PAYEETYPE
PAYEE_TYP
PYMT_DT

我希望上述变量列表的输出如下:

Account Number
Account Number
Account Number
Payee Type
Payee Typ
Payment Dt

我该怎么做?要转换的变量名列表约为10000个。已知单词的列表是40万个。两者都可以在文件中找到。你知道吗


Tags: 名称元素number列表typeaccount业务payment
1条回答
网友
1楼 · 发布于 2024-09-28 20:52:32

您可以创建已知单词的翻译映射,然后使用re.split将变量名与已知单词拆分,用映射单词替换匹配项,并用另一个regex替换来合并空格:

import re
known_words = '''Acct,Account
Account,Account
Num,Number
Number,Number
Payee,Payee
Pymt,Payment
Type,Type'''
variables = '''ACCOUNTNUM
ACCT_NUM
ACCTNUM
PAYEETYPE
PAYEE_TYP
PYMT_DT'''
m = {k.upper(): v for line in known_words.splitlines() for k, v in (line.split(','),)}
print([re.sub(' +', ' ', ' '.join(m.get(t, t).replace('_', '').title() for t in re.split('(%s)' % '|'.join(map(re.escape, m)), v, flags=re.IGNORECASE) if t)) for v in variables.splitlines()])

这将输出:

['Account Number', 'Account Number', 'Account Number', 'Payee Type', 'Payee Typ', 'Payment Dt']

相关问题 更多 >