Удалить символы из файла при помощи Python?
У меня есть файл rich.txt, который преимущественно выглядит как словарь, где каждая строка начинается новым словом. К сожалению после каждого слова следует символ / и несколько букв от чего мне нужно избавиться. Выглядит это так: (каждое слово начинается с новой строки)
Äbte/Nm
Äbtissin/Fm
Äbtissinnenliste/Nm
Äbtissinnenstäbe/Nm
Нужно добиться:
Äbtissin
Äbtissinnenliste
Äbtissinnenstäbe
Так как файл достаточно большой, удалить это вручную нереально. Поэтому мне бы хотелось при помощи регулярного выражения (\/)\w* удалить эти символы после всех слов при помощи Python и сохранить изменения. Подскажите пожалуйста как это можно реализовать?
Ответы (2 шт):
Воспользуйтесь https://regex101.com/ Если у вас есть нужное регулярное выражение, протестируйте его на нужной строке(в вашем случае текстом из файла или хотя бы частью). Если все заработает как задумано, просто выберите нужный язык и вам сгенерирует код для вставки. Его и используйте
import re
regex = r"(\/)\w*"
test_str = "do/asdsa"
matches = re.finditer(regex, test_str, re.MULTILINE | re.IGNORECASE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
Можно также настроить тонко поиск. (игнорирование перенос и т.п.) Если вы правда хотите научиться, то вот: https://habr.com/ru/post/349860/
В данном простом случае можно обойтись без регулярных выражений:
with open(r"C:\Temp\rich.txt", encoding="utf-8") as fin, \
open(r"C:\Temp\result.txt", "w", encoding="utf-8") as fout:
for line in fin:
s,_,_ = line.partition("/")
print(s, file=fout)