0

私はサッカー チームの名前を含むデータベースを持っています (たとえば、以下の最初のエントリでは、マーシャルとサザン メソジスト)。次に、私のデータベース名と一致するのは、いくつかの異なるが認識可能な名前です (以下の最初のエントリでは、SMU、マーシャル):

[u'Houston', u'Alabama']
[u'Houst', u'Alab']


[u'Florida State', u'North Carolina State']
[u'NCSt', u'FlaSt']


[u'Penn State', u'Iowa']
[u'PnSt', u'Iowa']


[u'Oklahoma', u'Texas']
[u'Texas', u'Okla']


[u'Florida Atlantic', u'South Florida']
[u'SFla', u'FlAtl']


[u'Georgia', u'Tennessee']
[u'Geo', u'Tenn']


[u'San Jose State', u'Idaho']
[u'UI', u'SJSU']


[u'Washington State', u'Arizona State']
[u'ArzSt', u'WshSt']


[u'Fresno State', u'Nevada']
[u'Nevad', u'FrsSt']


[u'Oregon State', u'Arizona']
[u'ARIZ', u'OSU']


[u'Clemson', u'Virginia Tech']
[u'VTech', u'Clem']


[u'Chattanooga', u'Arkansas']
[u'UTC', u'AR']


[u'USC', u'Stanford']
[u'USC', u'Stanf']


[u'Baylor', u'Colorado']
[u'BU', u'CU']


[u'North Texas', u'Louisiana-Lafayette']
[u'NoTex', u'LaLaf']


[u'Tulane', u'Army']
[u'TLN', u'ARMY']


[u'Troy', u'Florida International']
[u'TROY', u'FIU']


[u'Louisiana-Monroe', u'Arkansas State']
[u'ASU', u'ULM']


[u'Texas Tech', u'Iowa State']
[u'TT', u'ISU']


[u'Akron', u'Western Michigan']
[u'AKRON', u'WMU']


[u'Liberty', u'Toledo']
[u'LIBERTY', u'TOLEDO']


[u'Virginia', u'Middle Tennessee']
[u'Virg', u'MTnSt']


[u'Oklahoma State', u'Texas A&M']
[u'TexAM', u'OKSt']


[u'Notre Dame', u'UCLA']
[u'NDame', u'UCLA']


[u'Rutgers', u'Cincinnati']
[u'Cincy', u'Rutgr']


[u'Ohio State', u'Purdue']
[u'Prdue', u'OhSt']


[u'LSU', u'Florida']
[u'Fla', u'LSU']


[u'Air Force', u'UNLV']
[u'AFA', u'UNLV']


[u'Nebraska', u'Missouri']
[u'Misso', u'Neb']


[u'New Mexico State', u'Boise State']
[u'NMxSt', u'BoiSt']


[u'Pittsburgh', u'Navy']
[u'Navy', u'Pitt']


[u'Wake Forest', u'Florida State']
[u'WFrst', u'FlaSt']


[u'San Jose State', u'Hawaii']
[u'Hawa', u'SJSt']


[u'UCF', u'South Florida']
[u'UCF', u'SFla']

4 つの名前のグループごとに、データベース名を正しい新しい名前に一致させる必要があります。多くの if ステートメントを使用して今すぐこれを行うこともできますが、多くのコードが必要になり、特に洗練されたものにはなりません。ここで一致させるより良い方法はありますか?

4

3 に答える 3

1

これは、ステートメントの一部を示すいくつかのインジケーターがない限り、すべての TBH を取得せずに行うことはほとんど不可能です。例えば。

もしも

Kentucky Mississippi State
MS UK

このように表記されていました

[Kentucky Mississippi State]
[MS] [UK]

分割して解析するのは簡単です。

^\[([a-zA-Z,\s]*)\](?:\n)\[([a-zA-Z,\s]*)\]

正規表現の視覚化

Debuggex でライブ編集

編集:

更新されたデータを読み取るだけです。

^\[u\'([a-zA-Z,\s]*)\',\su\'([a-zA-Z,\s]*)'\]\n\[u\'([a-zA-Z,\s]*)\',\su\'([a-zA-Z,\s]*)\'\]$

正規表現の視覚化

Debuggex でライブ編集

すべてがキャプチャ グループでキャプチャされます :)

于 2013-09-03T23:14:51.540 に答える
1

Fuzzy Wuzzy は、名前を一致させるための非常に優れたツールです。

以下に一例を示します。

> choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
> process.extract("new york jets", choices, limit=2)
  [('New York Jets', 100), ('New York Giants', 78)]
> process.extractOne("cowboys", choices)
  ("Dallas Cowboys", 90)

詳細はこちら

于 2013-09-04T01:12:34.453 に答える