我有一个具有 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)
你在那儿做什么?如何去掉方括号?
这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).