我想写一个函数来处理我从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。
非常感谢任何帮助。 谢谢!
答案 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()
以上假设已填充剪贴板。换句话说,流程将类似于
result
result
毫无疑问,有更复杂的方法,但这应该足以让你前进。
答案 1 :(得分:0)
some_string = '''014300071432Gre
014300054037Col
014300065692ASC'''