我有一本字典,希望能够使用部分变量进行搜索并返回文本。
df = pd.read_csv('MY_PATH')
d = defaultdict(lambda: 'Error, input not listed')
d.update(df.set_index('msg')['reply'].to_dict())
d[last_msg()]
last_msg()
应该是我的部分变量,d
是我的字典。
我的字典上的索引是 df
中的 msg
列。
在msg
列中,我有一个像Jeff Bezos
这样的样本。
在回复
列中,我有一个匹配的回复杰夫·贝佐斯是亚马逊的首席执行官
如何在 msg
列中搜索部分值并从 reply
列中返回匹配值?
我只想搜索 Jeff
或 Bezos
并获得匹配的回复 Jeff Bezos 是亚马逊的首席执行官
PS。
defaultdict
的替代品也可能有助于改进代码。
编辑:last_msg()
代码从selenium元素中提取文本。
def last_msg():
try:
post = driver.find_elements_by_class_name("_12pGw")
ultimo = len(post) - 1
texto = post[ultimo].find_element_by_css_selector(
"span.selectable-text").text
return texto
except Exception as e:
print("Error, input not valid")
当我打印(d)时:
defaultdict(<function <lambda> at 0x0000021F959D37B8>, {'Jeff Bezos': 'Jeff Bezos is the CEO of Amazon', 'Serguey Brin': 'Serguey Brin co-founded Google', nan: nan})
当我打印(df)时
Unnamed: 0 msg reply
0 0 Jeff Bezos Jeff Bezos is the CEO of Amazon
1 1 Serguey Brin Serguey Brin co-founded Google
2 2 NaN NaN
3 3 NaN NaN
我找到了一种解决我自己问题的方法:
d = df.set_index('msg')['reply'].to_dict()
...
try:
x = next(v for k, v in d.items() if last_msg() in k)
except StopIteration:
x = 'Error, input not listed'
我是一名优秀的程序员,十分优秀!