Python:一个看似空间但不是空格的角色。它是什么?

时间:2014-06-20 20:49:09

标签: python python-3.x char space

这是在Python 3.4中。

我正在为自己编写我的第一个程序而且我已经陷入了某个部分。我正在尝试根据python中的元数据重命名我的所有音频文件。但是,当我尝试重命名文件时,它有时无法完成重命名。我认为这是由于一个无效的角色。问题是我不知道它是什么特征。对我来说,它看起来像一个空间,但事实并非如此。

我的代码在这里:

from tinytag import TinyTag
import os

print("Type in the file directory of the songs you would like to rename and organize:")
directory = input()
os.chdir(directory)
file_list = os.listdir(directory)

for item in file_list:
    tag = TinyTag.get(item)
    title = str(tag.title)
    artist = str(tag.artist)
    if artist[-1] == "\t" or artist[-1] == " ":
        print("Found it!")
    new_title = artist + "-" + title + ".mp3"
    #os.rename(item, new_title)
    print(new_title)

这是它输出的列表: http://imgur.com/tfgBdMZ

应输出“Artist-Title.mp3”,但有时会输出“Artist -Title .mp3”。当空间存在时,python会在此时停止重命名。这样做的第一个条目是Arethra Franklin。它只是命名文件Arethra Franklin而不是Arethra Franklin-Dr.Feelgood.mp3

为什么这样做?我的主要问题是那个空间是什么?我尝试设置一个==布尔值来查看它是否是一个空格(“”)但它不是。

一旦命中“空间”,它就会停止重命名。但是当它碰到正常空间时却没有。

1 个答案:

答案 0 :(得分:0)

文件名中可能包含一些unicode。如果您要查找的只是文件重命名器,则可以使用str.encode并使用?字符替换它们来处理错误。举个例子:

# -*- coding: utf-8 -*-
funky_name = u"best_song_ever_пустынных.mp3"
print (funky_name)
print (funky_name.encode('ascii','replace'))

这给出了:

best_song_ever_пустынных.mp3
best_song_ever_?????????.mp3

正如评论中所提到的,您可以使用ord来查找违规空间"真的是。