簡體   English   中英

如何根據單詞列表標記字符串

[英]how to tokenize strings based on a word list

我想根據 Python 3.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

我怎樣才能做到這一點 ? 要轉換的變量名列表大約有 10,000 個。 已知單詞列表是 400,000。 兩者都在文件中可用。

您可以創建已知單詞的翻譯映射,然后使用re.split將變量名稱與已知單詞分開,用映射單詞替換匹配項,並使用另一個正則表達式替換合並空格:

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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM