Is there a way to perform the following workflow:
- Select cells in an Excel spreadsheet
- Copy them using Ctrl+C
- Get the content the selected cells in a form of a python list or numpy array into the IPython shell?
Is there a way to perform the following workflow:
Update: It seems that the readline
thing that @PauloAlmeida mentioned is turned on by default in the 1.0 verison of IPython. So all you have to do is:
from numpy import array
Alt+V
instead of Ctrl+V
And you will get in IPython something like:
array([[1, 1], [2, 2]])
Or you can use the pandas library read_clipboard
method.
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
This will return you a pandas DataFrame object which acts similarly to a spreadsheet. You can find more about it in their official documentation.
Here is what I usually do:
Copy-paste the cells you want into a new Excel document. Click 'File' then 'Save as'. Select 'Save as type: CSV' . Close Excel and open the file with notepad or other editor.
Now you have something like this:
1, 2, 3
4, 5, 6
You can either
If you are on Windows, you can use PyReadline, which has a smart paste feature:
- Copy and paste using the clipboard
- Smart paste for convenient use with ipython. Converting tab separated data to python list or numpy array.
See also the documentation for clipboard functions:
ipython_paste
Paste windows clipboard. If enable_ipython_paste_list_of_lists is True then try to convert tabseparated data to repr of list of lists or repr of array. If enable_ipython_paste_for_paths==True then change \\ to / and spaces to \space.