Я отправляю этот ответ, потому что мой интерфейс администратора Virtualmin / Webmin решил, что было бы неплохо отключить мой PHP-движок. Я нашел время, чтобы найти решение, поэтому я решил поделиться с ним вы, ребята:
Также не забудьте проверить, что ни один из ваших конфигурационных файлов вашего сайта, связанных с этим конкретным хостом или виртуальным хостом, не имеет в них php_admin_value, которые отключают PHP, например:
php_admin_value engine Off
В случае сомнений прокомментируйте это ...
# php_admin_value engine Off
И перезагрузите свой веб-сервер.
Ваш шаблон немного неправильный. Вам нужно экранировать [
и ]
и не нужно экранировать @
, поскольку @
не является специальным символом в регулярном выражении. Также для захвата содержимого между этими начальным и конечным тегами недостаточно .
, поскольку он будет захватывать только один символ, поэтому вам нужно использовать осмотры вокруг и использовать .+?
для захвата текста между ними не жадным образом. Попробуйте использовать это регулярное выражение,
(?<=\[@introS\]).+?(?=\[@introEnd@\])
Здесь, (?<=\[@introS\])
положительный взгляд позади гарантирует, что любой текст будет захвачен, предшествует в буквальном смысле [@introS]
текст, а затем .+?
захватывает любой один или несколько символов как меньше (?=\[@introEnd@\])
и, по возможности, положительный взгляд на будущее [1111]. ] Редактировать: [1130]
В вашем коде было несколько проблем.
read()
для объекта file
, чтобы извлечь строку из файла findall
вместо сопоставления, когда сопоставление работает по-другому и пытается сопоставить полный текст с регулярным выражением encoding="utf-8"
для чтения / записи файла, поскольку файл содержит символы Юникода. Вот обновленная рабочая копия вашего кода,
import re
def separate_chapters():
pat = re.compile(r'(?<=\[@introS\]).+?(?=\[@introEnd@\])')
with open('text1_scott.txt', 'r', encoding="utf-8") as file:
for i in pat.findall(file.read()):
print(i)
inp = input("write text to a file? Y|N: ")
if inp != "Y":
continue
file_name = input("Name of your file: ")
with open(file_name, "w", encoding="utf-8") as out_file:
out_file.write(i)
print("text {} written to a file".format(i))
separate_chapters()
, которая хорошо выполнила и записала текст главы в имя файла, которое я ввел, когда мне предложили ввести имя файла. Здесь почти 3 часа утра, и я чувствую себя слишком уставшим и засыпаю, поэтому, возможно, не смогу ответить ни на один из дальнейших вопросов сейчас, но, несомненно, утром. И, надеюсь, вам больше не придется сталкиваться с какими-либо проблемами.