"East 19th Street" や "West 141st Street" のような住所がたくさんあるので、re.sub への 1 回の呼び出しで "th" と "st" を削除したいと考えています。
re.sub("(\d+)st|(\d+)nd|(\d+)rd|(\d+)th", "g<1>", "East 19th Street")
キャッチされるのは常に最初のグループであるとは限らないため、機能しません
サブをチェーンできましたが、汚れています。助けていただければ幸いです
これを試してみましょう:
re.sub(r"(\d+)(st|nd|rd|th)\b", r"\1", str)
またはそれ以上
re.sub(r"(?<=\d)(st|nd|rd|th)\b", '', str)
\b21strange交換などを防ぎます。
文法的に正しい構造のみを置き換えるには、次のことも試してください。
re.sub(r"(?<=1\d)th\b|(?<=1)st\b|(?<=2)nd\b|(?<=3)rd\b|(?<=[04-9])th\b", r'', str)
これは、無効なものを置き換えますが23rd、そのまま残します。ただし、これが面倒な価値があるかどうかはわかりません。44th23st