2017-03-11 11 views
1

ESPNのBPIページ(http://www.espn.com/mens-college-basketball/bpi/_/view/resume)から大学のバスケットボールチームのデータを盗んで、パンダのデータフレームに保存しています。 htmlテーブルをデータフレームに読み込むと、省略された学校名が完全な学校名に追加されます。たとえば、「North CarolinaUNC」というような文字列がいくつかあります。小文字の前に文字列の最後から大文字を削除するにはどうすればよいですか?

文字列の最後からUNCを削除するにはどうすればよいですか?

name = "North CarolinaUNC" 
name = re.sub(r"\z[A-Z]","", name) 

が、それは名前が二つの単語で構成されている学校のために動作しません:私は、文字列の末尾の文字にマッチする正規表現の下にしようとしました。小文字の前に大文字を含むルールを書く方法はありますか? North Carolina

import re 
name = "North CarolinaUNC" 
name = re.sub(r"(?<=[a-z])[A-Z]+$","", name) 

結果、すべての権利:大文字は小文字の後に来るかどうかをチェックするために、文字列の末尾、および非マッチングの後読みに一致するように

+0

残念ながら、Pythonの正規表現フレーバーに '\ z'アンカーが存在しないので、文字列の終わりまたは行末に一致するために' $ 'を使用する必要があります( 'mモディファイアがオンまたはオフに切り替わります)*。 –

+0

Pythonでは、 '\ Z'は文字列の最後に一致します。しかし、 '$'はここで十分ですが、右に置いてください。 '[A-Z]'は '+ 'でなければなりません。以下の回答を参照してください。 –

+0

@Kaushikあなたのタイトルはあなたの「あなたが文字列の前に小文字があるときに大文字を取り除くルールを書いていますか?」と一致しません。どちらですか?私はあなたが "Foo UNC"から "UNC"を削除したくないと思います。右? –

答えて

1

使用$

この式では、大文字が文字列の末尾にあっても小文字の後に来ないため、"North Carolina UNC"は変更されません。

+0

@CasimiretHippolyte done。先見の明が私のテストでうまくいくと思った。あなたは私が推測するリモート催眠の偉大な力を持っています:) –

+1

* "素晴らしい力をもたらす素晴らしい力" *:ベンパーカー –

+0

ありがとう!ウィレムの答えよりもこのことを使うことに違いはありますか? '+ $'アンカーを使用している場合は、前の文字が小文字であるかどうかを確認する必要はありません。 – Kaushik

関連する問題