开发者社区> 问答> 正文

str.contains在Python中不支持换行或反斜线

如果缩写包含'isinstr.contains方法的缩写包含'CS','DE','CM',我尝试过滤行:

id,abbreviation,countries
1,CH,Switzerland
2,CZ,Czech Republic
3,CL,Chile
4,CM,Cameroon
5,CN,China
6,DJ,Djibouti
7,CR,Costa Rica
8,CS,Czech
9,DE,Germany
10,CY,Cyprus

当我不使用换行符或反斜杠时,两者都可以正常工作并获得相同的结果:

mask1 = df['abbreviation'].str.contains('CS|DE|CM')
df[mask1]
mask2 = df['abbreviation'].isin(['CS', 'DE', 'CM'])
df[mask2]

出:

   id abbreviation countries
3   4           CM  Cameroon
7   8           CS     Czech
8   9           DE   Germany

但是我注意到在使用反斜杠时,如果有太多的值需要过滤,那么str.contains不能给出正确的答案,但是isin仍然有效。

第一个带有反斜杠的选项,仅过滤掉CS包含的行:

mask1 = df['abbreviation'].str.contains('CS|\
        DE|\
        CM')
df[mask1]

出:

   id abbreviation countries
7   8           CS     Czech

带反斜杠的第二个选项会生成正确的结果:

mask2 = df['abbreviation'].isin(['CS', \
          'DE', \
          'CM'])
df[mask2]

出:

   id abbreviation countries
3   4           CM  Cameroon
7   8           CS     Czech
8   9           DE   Germany

我只是想知道是否有人可以给我建议如何解决这个问题,如果我想对str.contains使用换行符?谢谢。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 10:01:35 743 0
1 条回答
写回答
取消 提交回答
  • str.contains属性,(来自文档)函数签名是,

    str.contains(pat,case = True,flags = 0,na = nan,regex = True)`

    在Python中,默认情况下,正则表达式模式(上面的pat)不允许使用空格/换行符。

    如果希望使模式更具可读性,例如带有注释,空格(应忽略)等,则必须向函数调用提供re.VERBOSE(doc re.VERBOSE)

    因此,对于您的代码,要使用预期的模式,

    In [52]: mask1 = df['abbreviation'].str.contains('CS|\    
        ...:         DE|\                                     
        ...:         CM', flags=re.VERBOSE)                   
        ...: df[mask1]
    
    Out[52]:                                                  
       id abbreviation countries                              
    3   4           CM  Cameroon                              
    7   8           CS     Czech                              
    8   9           DE   Germany                              
    

    回答来源:stackoverflow

    2020-03-24 10:01:43
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载