【问题标题】:(Python) Delete consecutive spaces in filename; leave a single space(Python) 删除文件名中的连续空格;留一个空格
【发布时间】:2019-05-08 12:33:10
【问题描述】:

第 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

结果,我认为这里的文字没有显示空格..?

已解决状态:

【问题讨论】:

  • 您在执行删除剩余空间时是否有具体问题或错误?
  • 为了删除多余的空间,我尝试了以下方法: path = os.getcwd() filenames = os.listdir(path) for filenames 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

标签: python rename filenames spaces


【解决方案1】:

使用正则表达式将多余的空格替换为一个

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'

【讨论】:

    【解决方案2】:

    使用正则表达式:

    import re
    os.rename(os.path.join(path, filename), os.path.join(path, re.sub('[\s_]+', ' ', filename))
    

    【讨论】:

      【解决方案3】:

      我的 2c 使用 globre.subos.rename

      import glob, os, re
      for fn in glob.glob('C:\\somedir\\*'):
          new_fn = re.sub(" ", "_")
          os.rename(fn, new_fn)
      

      【讨论】:

        猜你喜欢
        • 2015-06-27
        • 2019-05-18
        • 2017-11-03
        • 1970-01-01
        • 1970-01-01
        • 2016-07-31
        • 2021-03-10
        • 1970-01-01
        • 2021-02-02
        相关资源
        最近更新 更多