使用 Python 从 Excel 中提取列

mir*_*rvo 3 python excel xlrd

我有一个具有 ff: row/col 结构的 Excel 文件

ID   English   Spanish   French
 1   Hello     Hilo      Halu
 2   Hi        Hye       Ghi
 3   Bus       Buzz      Bas
Run Code Online (Sandbox Code Playgroud)

我想读取 Excel 文件,提取行和列值,并根据英语、西班牙语和法语列创建 3 个新文件。

所以我会有类似的东西:

英文文件:

"1" = "Hello"
"2" = "Hi"
"3" = "Bus"
Run Code Online (Sandbox Code Playgroud)

我一直在用xlrd。我可以打开、读取和打印文件的内容。但是,这是我使用此命令得到的结果(Excel 文件已打开):

for index in xrange(0,2):
    theWord = '\n' + str(sh.col_values(index, start_rowx=index, end_rowx=1)) + '=' + str(sh.col_values(index+1, start_rowx=index, end_rowx = 1))
    print theWord
Run Code Online (Sandbox Code Playgroud)

输出:

[u'Parameter/Variable/Key/String']=[u'ENGLISH'] <-- is this a list?, didn't the str() use to strip it out?
Run Code Online (Sandbox Code Playgroud)

在那儿做什么?如何去掉方括号?

Rau*_*fio 5

u意味着它是一个 unicode 字符串,当您调用 时它会被放在那里str()。如果将字符串写入文件,它就不会存在。您得到的是该列中的 1 行。这是因为您正在使用end_rowx=1它返回一个包含一个元素的列表。

尝试获取列值列表:

ids = sh.col_values(0, start_rowx=1)
english = sh.col_values(1, start_rowx=1)
spanish = sh.col_values(2, start_rowx=1)
french = sh.col_values(3, start_rowx=1)
Run Code Online (Sandbox Code Playgroud)

然后你可以将zip它们放入元组列表中:

english_with_IDS = zip(ids, english)
spanish_with_IDS = zip(ids, spanish)
french_with_IDS = zip(ids, french)
Run Code Online (Sandbox Code Playgroud)

其形式如下:

("1", "Hello"),("2", "Hi"), ("3", "Bus")
Run Code Online (Sandbox Code Playgroud)

如果你想打印这些对:

for id, word in english_with_IDS:
       print id + "=" + word
Run Code Online (Sandbox Code Playgroud)

col_values返回列值的列表,如果您想要单个值,可以调用sh.cell_value(rowx, cellx).