Удалить из строки указанный c символ - PullRequest
0 голосов
/ 11 июля 2020

Я хочу создать функцию, которая берет строку из файла .txt и удаляет двойные пробелы, но все, что я пробовал и обнаружил в inte rnet, удаляет каждый экземпляр символа, который я хочу удалить, или только первый экземпляр.

    def reduceWhitespace():
        my_file = open("Teste.txt", "r")
        new_line = ""
        old_line = my_file.readline()
        empty_char = ""

        for char in range(len(old_line)):
            if old_line [char] == " ":
                if old_line [char + 1] == " ":
                    new_line = old_line.replace(old_line [char], empty_char)

        print (new_line)
        my_file.close()

    reduceWhitespace()

Результатом должна быть строка без двойных пробелов:

«В этой строке есть лишние пробелы»

Но вместо этого она выводит строка без пробелов:

"Thislinehasextraspacecharacters"

Ответы [ 4 ]

0 голосов
/ 11 июля 2020

Если вы просто замените их до тех пор, пока не закончите, вы рискуете пройти через линию много раз. Вот решение на основе генератора:

def singlespacer(s):
    last = None
    for c in s:
        if c == ' ' and last == ' ':
            continue
        last = c
        yield c
    
s = 'This  line  has       extra       spaces'

print (''.join(singlespacer(s)))
0 голосов
/ 11 июля 2020

вы можете попробовать что-то вроде этого

x="aa//a//aa//aa/a//a"
x=x.replace("//","/",x.count("//"))
print(x)

вывод выглядит так: aa / a / aa / aa / a / a

0 голосов
/ 11 июля 2020

Вы можете использовать встроенную функцию замены. Например,

str = 'A  line with  single  and double spaces'
str = str.replace('  ', '')
print(str)

Это выведет 'Aline withsingleand double spaces'.

0 голосов
/ 11 июля 2020

приведенный ниже код преобразует несколько пробелов в одно пространство: (replace_double_space() функция преобразует несколько пробелов в строке в 1)

def replace_double_space(line):
    while "  " in line:
        line = line.replace("  ", " ")
    return line

my_file = open("Teste.txt", "r")
line = my_file.readline()
print ("before: ", line)

new_line = replace_double_space(line)
print ("after: ", new_line)

результат выполнения:

PS E:\> python .\test.py
before:  This line has extra   space   characters
after:  This line has extra space characters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...