Python 搜索字符串包含字符

Posted

技术标签:

【中文标题】Python 搜索字符串包含字符【英文标题】:Python search string contains characters 【发布时间】:2021-06-12 19:34:09 【问题描述】:

我有一个数据如下:

col1      
086945159
549615853
589ac2546
GED456231
F56hy8W12

我想查找col是否有非数值并返回。

col1         col2 
086945159    086945159
549615853    549615853
589ac2546    Nan
GED456231    Nan
F56hy8W12    Nan
111111111    Nan
222222222    Nan

我使用re.search(r'[^0-9]+', str) 来查找。但是,我如何在apply() 中使用它,因为如果col 中的值具有相同的数字,例如11111111222222222,这应该返回Nan

【问题讨论】:

我很确定你不能用正则表达式检查字符串是否包含相同的值。所以我建议之后用nan 替换它。 嗨!我相信社区可以帮助你解决这个问题。但首先,请使用tour,阅读what's on-topic here、如何提问和question checklist,并提供minimal reproducible example。 “为我实现此功能”与此站点无关。你必须做出诚实的尝试,然后就你的算法或技术提出一个具体的问题。欢迎使用 Stack Overflow! 你可以检查 len(set(string.split())) == 1 【参考方案1】:

您可以将mask 与条件模式一起使用:

# first part to match any non-digit
# second part to match identical characters
df['col2'] = df.col1.mask(df.col1.str.contains(r'\D|^(.)\1*$'))

输出:

        col1       col2
0  086945159  086945159
1  549615853  549615853
2  589ac2546        NaN
3  GED456231        NaN
4  F56hy8W12        NaN
5  111111111        NaN
6  222222222        NaN

【讨论】:

我想我的评论有误。今天学到了新东西,谢谢 这里的\D|^(.)\1*$ 是什么意思? @PeterChen 请参阅explanation here。 是否可以将Nan 返回为" """ 链与fillna('')?

以上是关于Python 搜索字符串包含字符的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何搜索字典键以查看它是否包含某个字符串

利用python os模块搜索指定目录下包含指定字符的文件

以随机顺序搜索包含特定字母的列表中的字符串

如何判断一个字符串中是不是包含另一个字符串

python 检查字符串中是否包含非中文字符的方法

Python Pandas Regex:在列中搜索带有通配符的字符串并返回匹配项[重复]