代码之家  ›  专栏  ›  技术社区  ›  RustyShackleford

如何检查非字母数字列中是否存在字符串?

  •  0
  • RustyShackleford  · 技术社区  · 6 年前

    我有这样的df:

    id    col1 
    1     [[[[[[['metal', 'soundtracks'], 'jazz'], 'indie'], 'hiphop'], 'rock'], 'pop'], 'electronic']
    

    如果角色 [ 是存在的。我该怎么做?

    我试过:

    df['col1'].str.contains('[').any()
    

    但我得到了错误:

    error: unterminated character set
    

    还尝试了以下组合:

    df['col1'].str.contains("[").any()
    df['col1'].str.contains("'['").any()
    df['col1'].str.contains('"["').any()
    

    都是同样的错误。

    我已确认所讨论列的数据类型为 object

    我的目标是扫描符号 [ 并应用我的逻辑来清理数据。

    if df['col1'].str.contains('[').any():
                     my logic
    

    还尝试强制该列像这样字符串化,但得到了相同的答案:

    df.col1 = df.col1.astype(str)
    

    编辑:

    尝试过:

    如果df['col1']..str.contains('[',regex=false).any()==true:

        my logic
    else:
        print('all good')
    

    我在上得到一个错误 if 陈述,即使角色存在

    1 回复  |  直到 6 年前
        1
  •  2
  •   jezrael    6 年前

    有问题了 [ 是特殊的regex字符,因此是必需的参数 regex=False :

    df['col1'].str.contains('[', regex=False).any()
    

    或转义值 \ :

    df['col1'].str.contains('\[').any()