usuwanie nadmiarowych spacji w pliku txt programem python
Aby usunąć nadmiarowe spacje w pliku tekstowym za pomocą Pythona, można wykorzystać różne podejścia, takie jak użycie metod split()
i join()
, wyrażeń regularnych (re.sub()
), czy też iteracyjne przetwarzanie linii. Poniżej przedstawiam szczegółowe rozwiązanie.
Najpierw należy otworzyć plik tekstowy w trybie odczytu ('r'
) i wczytać jego zawartość. Można to zrobić w całości lub linia po linii, w zależności od rozmiaru pliku.
split()
i join()
: Dzieli tekst na listę słów, ignorując nadmiarowe spacje, a następnie łączy je z powrotem w ciąg z pojedynczymi spacjami.re.sub()
): Pozwala na bardziej elastyczne usuwanie nadmiarowych spacji, w tym także innych białych znaków (np. tabulatorów).Po przetworzeniu tekstu należy zapisać wynik do nowego pliku lub nadpisać oryginalny plik.
import re
def remove_extra_spaces(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as file:
content = file.read()
# Usuwanie nadmiarowych spacji
cleaned_content = re.sub(r'\s+', ' ', content).strip()
with open(output_file, 'w', encoding='utf-8') as file:
file.write(cleaned_content)
# Przykład użycia
remove_extra_spaces('input.txt', 'output.txt')
def remove_spaces_line_by_line(input_file, output_file):
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:
for line in infile:
cleaned_line = ' '.join(line.split()) # Usuwa nadmiarowe spacje w linii
outfile.write(cleaned_line + '\n')
# Przykład użycia
remove_spaces_line_by_line('input.txt', 'output.txt')
strip()
i split()
jest często stosowana do usuwania nadmiarowych spacji, ponieważ jest prosta i efektywna.re.sub()
) są bardziej elastyczne i pozwalają na usuwanie różnych rodzajów białych znaków, takich jak tabulatory czy znaki nowej linii.pandas
czy nltk
w analizie tekstu sprawia, że operacje na plikach tekstowych są coraz bardziej zintegrowane z większymi pipeline'ami przetwarzania danych.split()
i join()
: split()
dzieli tekst na listę słów, ignorując nadmiarowe spacje, a join()
łączy je z powrotem w ciąg z pojedynczymi spacjami.re.sub()
: Wyrażenie regularne \s+
dopasowuje dowolną liczbę białych znaków (spacje, tabulatory, nowe linie), które są zastępowane pojedynczą spacją.Plik wejściowy (input.txt
):
To jest przykładowy tekst.
Zawiera nadmiarowe spacje.
Plik wyjściowy (output.txt
):
To jest przykładowy tekst. Zawiera nadmiarowe spacje.
utf-8
).split()
i join()
, wyrażeń regularnych (re.sub()
), lub iteracyjnego przetwarzania linii.