-2

さまざまなタイプの時間形式で構成されるパラグラフを取る Python ライブラリを作成しています。段落は実際にはさまざまなレストランのサイトから取られています。サイトごとにさまざまな形式で営業時間が設定されています。そこで、任意の形式のライブラリを作成することにしました (例: M-Fri 10am - 12pm、M、Tue、Wed 00:00-18:00 など)。私の決定は、文字列を取り、それが私のパターンのいずれかに一致する場合に続行する RegEx の別のセットを作成することです。

RegEx パターン マッチングを選択したのは、パターンごとに独自のロジックを記述し、str.replace を使用して置き換えるだけでは時間がかかる可能性があるためです。しかし、私は正規表現に慣れていないので、正規表現にこだわっています。それでは、次のタスクをどのように行うことができるか教えていただけますか?

最初のステップとして、以下のようにすべての平日のフォーマットを 3 文字の短縮曜日に短縮したいと思います。例: "月曜日 09:00 AM - 5:00 PM、火曜日 09:00 AM - 5:00 PM、水曜日 09:00 AM - 5:00 PM、木曜日 09:00 AM - 5:00 PM、金曜日 09:午前 0 時 ~ 午後 5 時、土曜休館、日曜休館

出力は「Mon 09:00 AM - 5:00 PM、Tue 09:00 AM - 5:00 PM、Wed 09:00 AM - 5:00 PM、Thu 09:00 AM - 5:00 PM、Fri 09 」となります。 :00 AM - 5:00 PM,土曜休み,日曜休み"

ありがとう。

4

2 に答える 2

5

ここでは単純にstr.replace機能するはずです:

new_paragraph = paragraph.replace('Monday','Mon')

モジュールを使用してcalendar、これを少し簡単にすることもできます。

import calendar

for day,abbr in zip(calendar.day_name,calendar.day_abbr):
    paragraph = paragraph.replace(day,abbr)

非常に大きな段落の場合は、正規表現に切り替える価値があるかもしれません:

import re
import calendar

regex = re.compile('|'.join(calendar.day_name))
sub_dict = dict(zip(calendar.day_name,calendar.day_abbr))
new_paragraph = regex.sub(lambda match: sub_dict[match.group(0)],paragraph)

もちろん、カレンダーでは、略語などはロケールに依存します (しかし、いずれにせよ望ましいことかもしれません)。

于 2012-12-13T14:51:00.820 に答える
0

このパターンを試してみてください: ([a-zA-Z]{3})[a-zA-Z]+( [0-9]| Closed) とこの置換: $1$2

于 2012-12-13T14:56:11.477 に答える