有没有办法把剪贴板的内容转换成运行 in Python的列表?

Is there a way to convert the clipboard content into list in the run in Python?

我想在 Python 中附加两个列表 ("a"&"b"),我在 python 中编码了列表 "b",但是列表 "a" 来自剪贴板(总是不同)。

例如

a = ["car", "plane", "truck", "motorcycle", "jet", "train"] # this list come from clipboard, always change
Clipboard = ["car", "plane", "truck", "motorcycle", "jet", "train"]
b = ["plane", "jet"] # this list is always the same

有没有办法将剪贴板内容转换成 运行 中的列表 "a"(交互式)???

感谢高级。

您是想简单地读取剪贴板并拆分内容吗? 在 linux 上:

import pyperclip
print pyperclip.paste().split(" ")

Windows:

from Tkinter import Tk
root = Tk()
print Tk.clipboard_get(root).split(" ")

OS X:

from AppKit import *
pb = NSPasteboard.generalPasteboard()
pbstring = pb.stringForType_(NSStringPboardType)
print pbstring.split(" ")

[编辑]

看起来 pyperclip 也应该在 windows 和 OS X 下工作,因此这似乎是一个可移植的解决方案。参考:https://pypi.python.org/pypi/pyperclip/

从您的评论中可以看出,您实际上并不是在询问如何读取剪贴板的内容;你只是问如何解析恰好来自剪贴板的一些数据(大概是 you/the 用户手动粘贴的)。

所以真正的问题是:如何从 Python 源解析看起来有点像列表文字的东西?

如果它实际上 来自 Python 源的列表文字,则使用 ast 模块中的 literal_eval 函数:

>>> import ast
>>> s = "['a',2, (4,'b')]"
>>> lst = ast.literal_eval(s)
>>> print(lst)
['a', 2, (4, 'b')]

但是,如果您实际上不知道数据的来源,那么它很可能实际上是 JSON(您应该使用 json.loads 进行解析)、YAML 或其他格式这在表面上类似于 Python 文字但不完全相同。如果您尝试用 literal_eval 解析 JSON,它将在您的初始测试中起作用,然后在现实生活中由于 false 而不是 False 或类似的原因而失败。这就是为什么真正了解您拥有的数据类型很重要。如果它来自 Python 源代码,或者来自某些 Python 脚本调用 print 和列表,那就是 literal_eval 的目的。

尝试 Pandas read_clipboard:

import pandas
pandas.read_clipboard(header=None)

这应该 return 你是一个 DataFrame。请参阅 pandas.read_table().

文档中有关参数的信息