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

时间:2019-01-19 14:48:19

标签: python-3.x pandas character string-matching

我有一个看起来像这样的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()

所有错误都相同。

我已经确认相关列的dtype为object

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

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

也尝试像这样将列强制设置为字符串,但得到相同的答案:

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

编辑:

尝试过:

如果df ['col1']。str.contains('[',regex = False).any()==真:

    my logic
else:
    print('all good')

即使存在字符,我在if语句中也得到了错误的答案

1 个答案:

答案 0 :(得分:2)

存在问题[是特殊的正则表达式字符,因此必要的参数regex=False也是如此:

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

或通过\转义值:

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