(Python) Удалить последовательные пробелы в имени файла;оставить один пробел - PullRequest
0 голосов
/ 06 декабря 2018

1-й шаг: подчеркните пробел

path = os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
os.rename(os.path.join(path,filename),os.path.join(path, filename.replace("_", " ")))

РЕЗУЛЬТАТ:

(не могу опубликовать изображение еще .. так:)

WKN_855681(INTEL_CORP._______DL-001)_vom_03.12.2018482523.pdf

Geändert auf: (changed to)

WKN 855681(INTEL CORP.       DL-001) vom 03.12.2018482523.pdf

! Этохорошо: D

теперь я хотел бы удалить лишние пробелы в (измененном) состоянии.

PS: я чертов новобранец, поэтому, пожалуйста, пока не убивайте меня.

ty

Результат, я думаю, что текст здесь не показывает пробелы ..?outcome, i think the text here doesnt show the spaces..?

РЕШЕННОЕ СОСТОЯНИЕ: enter image description here

Ответы [ 3 ]

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

My 2c с использованием glob, re.sub и os.rename:

import glob, os, re
for fn in glob.glob('C:\\somedir\\*'):
    new_fn = re.sub(" ", "_")
    os.rename(fn, new_fn)
0 голосов
/ 06 декабря 2018

Используйте регулярное выражение:

import re
os.rename(os.path.join(path, filename), os.path.join(path, re.sub('[\s_]+', ' ', filename))
0 голосов
/ 06 декабря 2018

Используйте регулярные выражения для замены лишних пробелов только на один

import re
re.sub('\s{1,}',' ',file)

Тест

a='WKN 855681(INTEL CORP.       DL-001) vom 03.12.2018482523.pdf'

выход

'WKN 855681(INTEL CORP. DL-001) vom 03.12.2018482523.pdf'

Или вза один шаг заменить излишки _ всего одним пробелом

re.sub('\_{1,}',' ',file)

Тест

a='WKN_855681(INTEL_CORP._______DL-001)_vom_03.12.2018482523.pdf'
re.sub('\_{1,}',' ',a)

Выход

'WKN 855681(INTEL CORP. DL-001) vom 03.12.2018482523.pdf'
...