![](/img/trans.png)
[英]Ideas for manual copy-paste from excel to python code in spyder
[英]Copy-paste into Python interactive interpreter and indentation
這段代碼,文件test.py ,
if 1:
print "foo"
print "bar"
可以使用execfile("test.py")
或python test.py
成功執行,但是當您嘗試將其復制粘貼到 Python 解釋器中時:
File "<stdin>", line 3
print "bar"
^
SyntaxError: invalid syntax
為什么會這樣? 解釋器是否可以通過配置成功讀取復制粘貼的文本?
我想這可能會影響在解釋器中輸入,但這對我來說沒問題。
縮進可能丟失或損壞。
看看IPython——它是一個增強的 Python 解釋器,具有許多方便的特性。 其中之一是一個神奇的函數%paste
,它允許您粘貼多行代碼。
它還具有制表符完成、自動縮進……等等。 看看他們的網站。
在 IPython 中使用%paste
:
復制和粘貼內容是 Qt 控制台中修復的內容之一。 這是在新的IPython qtconsole中使用“正常工作”的代碼塊的普通舊復制和粘貼:
我不知道標准命令提示符的任何技巧,但我可以建議您使用更高級的解釋器,例如IPython ,它具有用於多行粘貼的特殊語法:
In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop.
:for c in range(3):
: print c
:
:--
0
1
2
另一種選擇是具有自動粘貼模式的bpython解釋器(如果您輸入的速度太快而無法成為人類):
>>> for c in range(3):
... print c
...
0
1
2
>>>
<C-r> Rewind <C-s> Save <F8> Pastebin <F9> Pager <F2> Show Source
做%autoindent
關閉自動縮進。 之后,您可以將代碼粘貼到 IPython 中。
當前所有的答案都建議您改用 IPython。 對於僅限 Python 的解決方案,您可以使用textwrap從行中刪除前導空格。
例如,
>>> code=""" x='your pasted code'
y='with common indentation'"""
>>> formatted=textwrap.dedent(code)
>>> exec(formatted)
如果您像我一樣使用Notepad++ (從中復制和粘貼),請嘗試通過轉到菜單設置→首選項→語言並檢查空格替換來用空格替換制表符。
我自己有這個問題很長時間了,我發現 python.exe 識別空格。
我最近為類似問題找到的另一種解決方案:
$ python << EOF
if 1:
print "foo"
print "bar"
EOF
如果粘貼的內容有任何空行,解釋器在遇到它們時會觸發評估。 如果空行之后的任何行有縮進,則會導致IndentationError
因為之前的任何上下文都已關閉。
解決方案:
請注意,空格與制表符似乎無關緊要。
exec(pyperclip.paste())
只要您不介意使用exec
。 我想除了pyperclip
之外的任何其他第三方剪貼板包都可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.