Как я могу избавиться от двойных пробелов?(Python) - PullRequest
0 голосов
/ 06 декабря 2018

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

0 45 1 31 2 54 3 54 4 64

С пробелом до нуля, два пробела между каждыми двумя целыми числамии пробел в конце.Я хочу, чтобы это выглядело следующим образом:

0 45 1 31 2 54 3 54 4 64

Я пробую все (с использованием Python), но у меня ничего не получается!

Конечно, в концеЯ хочу изменить это на:

45 31 54 54 64

Это также исключает числа от 0 до 4.Но этот последний шаг может быть легче сделать, если я достигну первого.

Например, я пробовал это:

with open('myfile', rt') as openfile, open('myfile_2, 'a') as csvfile:
    for line in openfile:
            A = str(line).replace('  ', ' ')
            Writer = csv.writer(csvfile, delimiter=' ', quotechar=' ')
            Writer.writerow([A])

Но все же в myfile_2 строка не исправляется.

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Вы можете использовать re вместо:

import re
# Handles multiple whitespaces
WHITE_SPACE_PATTERN = re.compile(r' +')
# or
# WHITE_SPACE_PATTERN = re.compile(r'\s+')
# if you want to handle newlines as well

sample_string = "0  45  1  31  2  54  3  54  4  64"
cleaned_string = re.sub(WHITE_SPACE_PATTERN, ' ', sample_string.strip())
0 голосов
/ 06 декабря 2018

Вы можете использовать регулярное выражение для соответствия одному или нескольким пробелам (' +', где + подразумевает "один или несколько") и заменить их одним пробелом:

import re
line = ''
file_object  = open("test.txt", "r+")
for line in file_object:
    line=line
print re.sub(' +', ' ',line.lstrip())
0 голосов
/ 06 декабря 2018

Внесенные изменения соответственно:

with open('newtes.txt', 'w') as outfile, open('tes.txt', 'r') as infile:
    for line in infile:
        outfile.write(line.replace('  ',' ').strip())

правка 1: полоса () добавлена ​​в соответствии с предложением в комментарии
правка 2: внесены изменения.

...