Как делать удалять символы в txt python
Перейти к содержимому

Как делать удалять символы в txt python

  • автор:

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Удаление последнего символа в текстовом файле

#1 Июль 9, 2010 13:27:08

XdenisX От: Зарегистрирован: 2009-10-31 Сообщения: 30 Репутация: 0 Профиль Отправить e-mail

Удаление последнего символа в текстовом файле

Коллеги, хочу удалить в пакетном режиме последний символ в каждом текстовом файле (знак переноса строки).
Как это лучше сделать?

#2 Июль 9, 2010 14:09:57

bw От: Зарегистрирован: 2007-09-26 Сообщения: 938 Репутация: 20 Профиль Адрес электронной почты

Удаление последнего символа в текстовом файле

Укорачивает файл на 1 байт, самый быстрый способ:

>>> f = open('somefile.txt, 'ab')
>>> f.truncate(f.tell() - 1)
>>> f.close()

Если файл имеет нулевую длину, получишь ошибку (IOError) в момент truncate‘а.

Кошерный способ, должен быть самым быстрым, урезает не более 10 последних \r и \n:

>>> f = open('otherfile.txt', 'rb')
>>> f.seek(0, 2)
>>> f.seek(max(f.tell() - 10, 0))
>>> tail_bytes = f.read()
>>> f.close()
>>> f = open('otherfile.txt', 'ab')
>>> f.truncate(f.tell() - len(tail_bytes))
>>> f.write(tail_bytes.rstrip('\r\n'))
>>> f.close()

p.s. А вообще, я с файлами на таком уровне не работаю, так что не эксперт :-).

Отредактировано (Июль 9, 2010 14:11:30)

Д. П. Кириенко. Программирование на языке Python (школа 179 г. Москвы)

Для каждого файла, с которым необходимо производить операции ввода-вывода, нужно связать специальный объект — поток. Открытие файла осуществляется функцией open , которой нужно передать два параметра. Первый параметр (можно также использовать именованный параметр file ) имеет значение типа str , в котором записано имя открываемого файла. Второй параметр (можно также использовать именованный параметр mode ) —это значение типа str , которое равно «r» , если файл открывается для чтения данных (read), «w» , если на запись (write), при этом содержимое файла очищается, и «a» — для добавления данных в конец файла (append). Если второй параметр не задан, то считается, что файл открывается в режиме чтения.

Функция open возвращает ссылку на файловый объект, которую нужно записать в переменную, чтобы потом через данный объект использовать методы ввода-вывода. Например:

input = open('input.txt', 'r') output = open('output.txt', 'w')

Чтение данных из файла

Для файла, открытого на чтение данных, можно вызывать следующие методы, позволяющие читать данные из файла.

Метод readline() считывает одну строку из файла (до символа конца строки ‘\n’ , возвращается считанная строка вместе с символом ‘\n’ . Если считывание не было успешно (достигнут конец файла), то возвращается пустая строка. Для удаления символа ‘\n’ из конца файла удобно использовать метод строки rstrip() . Например: s = s.rstrip() .

Метод readlines() считывает все строки из файла и возвращает список из всех считанных строк (одна строка — один элемент списка). При этом символы ‘\n’ остаются в концах строк.

Метод read() считывает все содержимое из файла и возвращает строку, которая может содержать символы ‘\n’ . Если методу read передать целочисленный параметр, то будет считано не более заданного количества символов. Например, считывать файл побайтовопосимвольно можно при помощи метода read(1) .

Вывод данных в файл

Данные выводятся в файл при помощи метода write , которому в качестве параметра передается одна строка. Этот метод не выводит символ конца строки ‘\n’ (как это делает функция print при стандартном выводе), поэтому для перехода на новую строку в файле необходимо явно вывести символ ‘\n’ .

Также можно выводить данные в файл при помощи функции print , если передать ей еще один именованный параметр file , равный ссылке на открытый файл. Например:

output = open('output.txt', 'w') print(a, b, c, file=output)

Закрытие файла

После окончания работы с файлом необходимо закрыть его при помощи метода close() .

Пример

Следующая программа считывает все содержимое файла input.txt , записывает его в переменную s , а затем выводит ее в файл output.txt .

input = open('input.txt', 'r') output = open('output.txt', 'w') s = input.read() output.write(s) input.close() output.close()

А вот аналогичная программа, но читающая данные посимвольно:

input = open('input.txt', 'r') output = open('output.txt', 'w') c = input.read(1) while len(c) > 0: output.write(c) c = input.read(1) input.close() output.close()

Удалить из файла заданные символы

Дан символьный файл. Переписать его содержимое в другой файл, предварительно удалив из него все символы -и /.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Удалить все строки, где встречаются заданные ключевые слова, из большого текстового файла
Есть log-файл на несколько гигабайт, нужно удалить из него все строки, в которых встречаются.

Удалить в строке все заданные символы
дан файл содержащий произвольный текст. Удалите в строке все символы <!> полученный текст.

В текстовом файле удалить заданные символы
Есть файл тхт. Нужно удалить в нем определенные символы. Вопрос — как это сделать средствами.

Удалить из строки символы, заданные в текстбокс
удалить из слова, введенного в Textbox1, символов, введенных Textbox2 и Textbox3. Полученное.

В многострочном тексте необходимо удалить все заданные символы
Здравствуйте! В многострочном тексте (char text) необходимо удалить все заданные символы. Пустые.

Удалить символы из файла при помощи Python?

У меня есть файл rich.txt, который преимущественно выглядит как словарь, где каждая строка начинается новым словом. К сожалению после каждого слова следует символ / и несколько букв от чего мне нужно избавиться. Выглядит это так: (каждое слово начинается с новой строки)

Äbte/Nm Äbtissin/Fm Äbtissinnenliste/Nm Äbtissinnenstäbe/Nm 

Нужно добиться:

Äbtissin Äbtissinnenliste Äbtissinnenstäbe 

Так как файл достаточно большой, удалить это вручную нереально. Поэтому мне бы хотелось при помощи регулярного выражения (\/)\w* удалить эти символы после всех слов при помощи Python и сохранить изменения. Подскажите пожалуйста как это можно реализовать?

Отслеживать
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
задан 11 мар 2020 в 12:01
41 1 1 серебряный знак 6 6 бронзовых знаков

Приведите пожалуйста в вопросе ваши попытки решения. На данном ресурсе принято помогать тем, кто сам что-то попытался сделать)

11 мар 2020 в 12:12
11 мар 2020 в 12:14
регулярку составьте, и в тех строках, что встретились эти символы, меняйте их на пустые символы
11 мар 2020 в 12:16

У меня получилось убрать ненужные символы, вернее заменить их: import re worte = »’Äbte/Nm Äbtissin/Fm Äbtissinnenliste/Nm Äbtissinnenstäbe/Nm »’ f = re.sub(r'(/)\w*’,’ ‘,worte) print(f) Однако так как я новичок в Python я запуталась в том, как я могу сделать это в самом файле и после этого сохранить эти изменения

11 мар 2020 в 12:20
11 мар 2020 в 13:29

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

В данном простом случае можно обойтись без регулярных выражений:

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) 

Отслеживать
ответ дан 11 мар 2020 в 12:28
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака

Воспользуйтесь 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 was found at -: ".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 found at -: ".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. 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *