完全相同的文本字符串不匹配

2024-09-21 00:49:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个dataframe titlestore中有两个列,我希望通过这些列对dataframe进行子集:

In [84]:
    2631              coffee‑mate sugar free french ...  jet.com
    2633            nestle coffeemate natural bliss ...  jet.com
    2634         coffee‑mate liquid coffee creamer, ...  jet.com
    3085                       coffee‑mate hazelnut ...  jet.com

当我尝试:

^{pr2}$

我得到:

Out[84]: 
Empty DataFrame
Columns: [title, store]
Index: []

但是,当我这样做时:

df[(df.title.str.contains('coffee')) & (df.store.str.contains('jet.com'))]

我得到:

    2631              coffee‑mate sugar free french ...  jet.com
    2633            nestle coffeemate natural bliss ...  jet.com
    2634         coffee‑mate liquid coffee creamer, ...  jet.com
    3085                       coffee‑mate hazelnut ...  jet.com

我不知道这是怎么回事!在

我试着复制“coffee mate”来做一个等价性测试,得到了False。在

'coffee‑mate' == 'coffee-mate'
Out[92]: False

我觉得这和编码有关,但不知道如何检测和修复问题。有人能帮忙吗?在


Tags: storecomfreedataframedftitlesugarnatural
1条回答
网友
1楼 · 发布于 2024-09-21 00:49:02

dataframe中的“coffee mate”使用非中断连字符(u"\u2011"),搜索字符串使用连字符

非破坏性 http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=%E2%80%91&mode=char

你的连字符 http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=-&mode=char

虽然它们在您和我看来是一样的,但Python认为它们是两个不同的字符。如果您以后遇到这个问题,我只需将字符复制粘贴到这个UTF8 tool中就解决了这个问题—您明智地运行了一个coffee-mate和{}的比较

相关问题 更多 >

    热门问题