【发布时间】:2013-08-19 10:49:42
【问题描述】:
有没有办法执行以下工作流程:
- 在 Excel 电子表格中选择单元格
- 使用 Ctrl+C 复制它们
- 将选定单元格的内容以 python 列表或 numpy 数组的形式获取到 IPython shell 中?
【问题讨论】:
-
实际上很清楚@Norfeldt 在问什么。我会稍微修改一下这个问题。
-
现在完全清楚被问到的是什么。这个问题应该重开!!
有没有办法执行以下工作流程:
【问题讨论】:
更新:看来@PauloAlmeida 提到的readline 的东西在IPython 1.0 版本中是默认开启的。所以你所要做的就是:
from numpy import arrayAlt+V 而不是Ctrl+V
你会在 IPython 中得到类似的东西:
array([[1, 1], [2, 2]])
或者你可以使用 pandas 库read_clipboard 方法。
import pandas as pd
pd.read_clipboard() # If you have selected the headers
pd.read_clipboard(header=None) # If you haven't selected the headers
这将返回一个类似于电子表格的 pandas DataFrame 对象。您可以在他们的官方documentation 中找到更多相关信息。
【讨论】:
这是我通常做的:
将所需的单元格复制并粘贴到新的 Excel 文档中。 单击“文件”,然后单击“另存为”。 选择“保存类型:CSV”。 关闭 Excel 并使用记事本或其他编辑器打开文件。
现在你有这样的东西:
1, 2, 3
4, 5, 6
你可以
【讨论】:
如果你在 Windows 上,你可以使用PyReadline,它有一个智能粘贴功能:
- 使用剪贴板复制和粘贴
- 智能粘贴,方便与 ipython 一起使用。将制表符分隔的数据转换为 python 列表或 numpy 数组。
另见documentation for clipboard functions:
ipython_paste
粘贴窗口剪贴板。如果 enable_ipython_paste_list_of_lists 为 True 则尝试将制表符分隔的数据转换为列表列表的 repr 或 数组的代表。如果 enable_ipython_paste_for_paths==True 然后更改 \\ 到 / 和空格到 \space。
【讨论】: