-1

我想浏览我文件夹中的数据,识别它们并根据我在excel电子表格中的规则列表重命名它们我加载所需的库,我将我的目录设为工作目录;我读入 xcel 文件(使用 xlrd),当我尝试按列读取数据时,例如:

fname = metadata.col_values(0, start_rowx=1, end_rowx=None)

值列表前面带有一个u- 我猜是 unicode - 例如:fname = [u'file1', u'file2'] 等等

如何将 fname 转换为 ascii 字符串列表?

4

2 回答 2

0

我不确定拥有 unicode 文件名背后的大问题是什么,但假设你的所有字符都是 ascii 有效字符,那么下面应该这样做。此解决方案将忽略任何非 ascii 的内容,但值得考虑一下为什么您首先要这样做:

ascii_string = unicode_string.encode("ascii", "ignore")

具体来说,为了转换整个列表,我将使用列表理解:

ascii_list = [old_string.encode("ascii", "ignore") for old_string in fname]
于 2013-07-22T14:20:54.143 回答
0

前面u的 只是一个视觉项目,当您打印字符串时,它会向您展示底层表示是什么。就像打印该列表时字符串周围的单引号一样——它们在那里向您展示有关正在打印的对象的一些信息(特别是,它是一个字符串),但它们实际上并不是对象的一部分。

在 的情况下u,它说它是一个 unicode 对象。当您在内部使用字符串时,u外部的字符串不存在,就像单引号一样。尝试打开一个文件并在其中写入字符串,您会看到 theu和单引号没有出现,因为它们实际上不是底层字符串对象的一部分。

with open(r'C:\test\foo.bar', 'w') as f:
    for item in fname:
        f.write(item)
        f.write('\n')

如果您确实需要u在开头没有打印字符串,您可以使用 将它们转换为 ASCII u'unicode stuff'.encode('ascii'),但老实说,我怀疑这对您正在做的事情实际上很重要。

您也可以只使用 Python 3,其中 Unicode 是默认设置,u通常不会打印。

于 2013-07-22T14:22:45.173 回答