我想查看我的文件夹中的数据,识别它们并根据我在Excel电子表格中的规则列表重命名它们 我加载了所需的库, 我使我的目录成为工作目录; 我读了xcel文件(使用xlrd) 当我尝试按列读取数据时,例如:
fname = metadata.col_values(0, start_rowx=1, end_rowx=None)
值列表在它们前面带有u
- 我想unicode - 例如:
fname = [u'file1',u'file2']等等
如何将fname转换为ascii字符串列表?
答案 0 :(得分:0)
我不确定拥有unicode文件名的大问题是什么,但假设你的所有字符都是ascii有效字符,下面应该这样做。这个解决方案只会忽略任何非ascii,但是值得思考你为什么要这样做:
ascii_string = unicode_string.encode("ascii", "ignore")
具体来说,为了转换整个列表,我会使用列表理解:
ascii_list = [old_string.encode("ascii", "ignore") for old_string in fname]
答案 1 :(得分:0)
前面的u
只是一个可视项目,可以在您打印字符串时向您显示底层表示。就像打印该列表时字符串周围的单引号一样 - 它们可以显示有关正在打印的对象的内容(具体来说,它是一个字符串),但它们实际上并不是对象的一部分。
在u
的情况下,它说它是一个unicode对象。当您在内部使用字符串时,外部的u
不存在,就像单引号一样。尝试打开一个文件并在那里写字符串,你会看到u
和单引号没有显示,因为它们实际上并不是底层字符串对象的一部分。
with open(r'C:\test\foo.bar', 'w') as f:
for item in fname:
f.write(item)
f.write('\n')
如果你真的需要在开始时没有u
打印字符串,你可以用u'unicode stuff'.encode('ascii')
将它们转换为ASCII,但老实说,我怀疑这对你正在做什么很重要
您也可以使用Python 3,其中Unicode是默认值,而u
通常不会打印。