замените пробелы и новую строку запятой - PullRequest
1 голос
/ 07 августа 2020

У меня есть такая строка:

filenames = 'file_1, file2, file3 \ nfile4'

Я хочу заменить пробелы без пробела и новую строку с запятой

До сих пор я пробовал это:

file_name = re.sub(r"\s+", "", filenames, flags=re.UNICODE)

, который возвращает:

file_name = 'file_1, file2, file3file4'

но я хочу:

filenames = 'file1,file2,file3,file4'

Ответы [ 3 ]

3 голосов
/ 07 августа 2020

Попробуйте следующее:

file_name = re.sub(r"[,\s]+", ",", filenames, flags=re.UNICODE)
1 голос
/ 07 августа 2020

Решением без регулярного выражения было бы разделение, обрезка и объединение после замены всех \n на ','. Это предотвратит удаление необходимых пробелов (например, если имя файла содержит пробел)

filenames = 'file_1, file2, file3\nfile4, file         5'
','.join(filter(None, [s.strip() for s in filenames.replace('\n', ',').split(',')]))
# 'file_1,file2,file3,file4,file         5'

filter(None, [...]) удалит любую пустую строку, если, например, у вас есть 'foo,bar,,hello\n\nworld'

1 голос
/ 07 августа 2020

Существует разница между вашими письменными требованиями и желаемым результатом.

Во-первых, вам нужно заменить '\ n' на ',', чтобы он выглядел как ваш желаемый результат.

Во-вторых , вы говорите, что вам нужны пробелы без пробелов, но в желаемом выводе все еще есть пробелы.

Это исправление для '\ n':

doc = 'file_1, file2, file3\nfile4'
doc = doc.replace('\n', ', ')
print(doc)
file_1, file2, file3, file4

Если вам нужны пробелы с без пробелов:

doc = doc.replace(' ', '')
print(doc)
file_1,file2,file3,file4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...