Аргумент case
на самом деле удобен как альтернатива указанию flags=re.IGNORECASE
.Это не имеет никакого отношения к замене, если замена не основана на регулярных выражениях.
Итак, когда regex=True
, это ваш возможный выбор:
pd.Series('Jr. eng').str.replace(r'jr\.', 'jr', regex=True, case=False)
# pd.Series('Jr. eng').str.replace(r'jr\.', 'jr', case=False)
0 jr eng
dtype: object
Или,
pd.Series('Jr. eng').str.replace(r'jr\.', 'jr', regex=True, flags=re.IGNORECASE)
# pd.Series('Jr. eng').str.replace(r'jr\.', 'jr', flags=re.IGNORECASE)
0 jr eng
dtype: object
Вы также можете получить дерзкий и обойти оба аргумента ключевых слов с помощьювключение флага нечувствительности к регистру как части шаблона как ?i
.См.
pd.Series('Jr. eng').str.replace(r'(?i)jr\.', 'jr')
0 jr eng
dtype: object
Примечание
Вам потребуется экранировать период \.
в режиме регулярных выражений, поскольку неэкранированная точка является метасимволом с другим значением(соответствует любому персонажу).Если вы хотите динамически экранировать мета-символы в шаблонах, вы можете использовать re.escape
.
Для получения дополнительной информации о флагах и якорях см. этот разделдокументы и re
HOWTO .
Исходный код ясно, что аргумент "case" игнорируется, если regex=False
.См.
# Check whether repl is valid (GH 13438, GH 15055)
if not (is_string_like(repl) or callable(repl)):
raise TypeError("repl must be a string or callable")
is_compiled_re = is_re(pat)
if regex:
if is_compiled_re:
if (case is not None) or (flags != 0):
raise ValueError("case and flags cannot be set"
" when pat is a compiled regex")
else:
# not a compiled regex
# set default case
if case is None:
case = True
# add case flag, if provided
if case is False:
flags |= re.IGNORECASE
if is_compiled_re or len(pat) > 1 or flags or callable(repl):
n = n if n >= 0 else 0
compiled = re.compile(pat, flags=flags)
f = lambda x: compiled.sub(repl=repl, string=x, count=n)
else:
f = lambda x: x.replace(pat, repl, n)
Вы можете видеть, что аргумент case
проверяется только внутри оператора if
.
IOW, единственный способ - обеспечить regex=True
так что замена основана на регулярных выражениях.