复制时出错 - 从Excel粘贴列

时间:2014-03-26 10:19:46

标签: python string excel split

我想写一个函数来处理我从Excel带来的一些数据。数据基本上位于Excel列(事务ID)中。出于我自己的方便,我想我会使用raw_input从Excel中复制粘贴列,存储它并运行该函数。

然而,无论我做什么,我都会遇到错误(实际上我已经陷入了引入数据的第一阶段),而且我很确定原因是因为每个项目都在一个新的行中(当我使用Excel的选项将列转换为行,我没有错误。)

因此,例如,如果我想尝试设置一个样本字符串,例如:

some_string = "014300071432Gre
014300054037Col
014300065692ASC"

(这是从Excel中的列粘贴时获得的格式), 并且只是调用some_string,我得到:

  File "<stdin>", line 1
    al = "014300071432Gre
                        ^
SyntaxError: EOL while scanning string literal

我尝试用.split()删除换行符但是没有用

我也尝试过我在几个主题中提到的三重引号,但这也没有用。它只会让我更加困惑,因为我认为当你希望python评估某些内容时会使用三引号。

我已经放置了一些Sample Data in a Google doc

非常感谢任何帮助。 谢谢!

2 个答案:

答案 0 :(得分:1)

您是正确的,将raw_input与复制的Excel数据列一起使用的难度是新行。问题是raw_input专门读取一行。来自official docs

的raw_input([提示])
如果存在提示参数,则将其写入标准输出而不带尾随换行符。然后该函数从输入中读取一行,将其转换为字符串(剥离尾随换行符),然后返回该行。

根据定义,换行符标记行的结尾。因此,将一列Excel数据粘贴到raw_input中并不是一种简单的方法。


在大多数情况下,从Python读取Excel数据的最佳方法是直接读取Excel文件。最好的方案是xlrd。假设您的工作簿名为myData.xls,并且您希望从第一张表中读取A2:A5,那么您将执行类似

的操作
import xlrd

wb = xlrd.open_workbook('myData.xls')
ws = wb.sheet_by_index(0)
result = ws.col_values(0, 1, 5)

此时,result将是一个4元素的单元格值列表(A2,A3,A4和A5)。


如果您确实需要用户界面,请在Excel中复制一系列单元格;粘贴到我的应用程序&#34;那么您可能需要研究构建一个具有多行文本输入框的GUI。在这里你有很多选择,从Python包括Tkinter到Python的第三方库,到非Python GUI(只要他们可以读取输入然后将它传递给你的Python程序) )。


编辑:您可以直接阅读剪贴板(因此根本不要执行粘贴步骤)。有关详细信息,请参阅these questions。从这些问题中获得的最简单的解决方案依赖于Tkinter:

from Tkinter import Tk

r = Tk()
result = r.selection_get(selection='CLIPBOARD')
r.destroy()

以上假设已填充剪贴板。换句话说,流程将类似于

  1. 您的程序会提示用户在Excel中复制选区
  2. 用户在Excel中复制选择
  3. 用户响应您的程序提示(让您的程序知道剪贴板已准备就绪)
  4. 您的程序会发出上述代码段以将剪贴板内容抓取到result
  5. 您的程序根据需要处理result
  6. 毫无疑问,有更复杂的方法,但这应该足以让你前进。

答案 1 :(得分:0)

some_string = '''014300071432Gre
014300054037Col
014300065692ASC'''