Как искать внутри строки и изменять
Здесь новичок в Python. В скрипте, который я использую, есть метод s_lower(value)
для перевода в нижний регистр каждого текста, опубликованного пользователем. Также есть некоторые специальные синтаксисы, такие как [spec sometexthere]
.
Я хочу не писать строчные буквы, если текст имеет специальный синтаксис (в данном случае [spec ...]), но писать строчные буквы во всем остальном тексте.
Например,
THIS IS A TEXT [spec CAPITAL] EXAMPLE
Это должно быть отображено как
this is a text [spec CAPITAL] example
К сожалению, я не смог увидеть/записать журналы (возможно, из-за docker), поэтому я как бы слеп, но надеюсь, этот блок кода ниже даст вам некоторую подсказку, чтобы направить меня
WEBURL = r"(?:(?:(?:(?:https?):)\/\/)(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[?") # actually much more longer
def s_lower(value):
url_nc = re.compile(f"({WEBURL})")
# Links should not be lowered
if url_nc.search(value):
substrings = url_nc.split(value)
for idx, substr in enumerate(substrings):
if not url_nc.match(substr):
substrings[idx] = i18n_lower(substr)
return "".join(substrings)
return value.lower()
Я хочу что-то вроде если значение имеет "[spec", то найдите номер индекса "[" и "]", затем не опускайте текст между этими парантезами, но опускайте весь остальной текст.
этот код разбивает текст на части, а затем смотрит, находится ли он в скобках, если нет, то делает его строчным
text = "THIS IS A TEXT [spec CAPITAL] EXAMPLE"
lower = True
text2 = ""
for char in text:
if char == "[":
lower = False
text2 += char
continue
if char == "]":
lower = True
text2 += char
continue
if lower:
if char.islower():
text2 += char
continue
text2 += char.lower()
else:
text2 += char
print(text2)