python 判断字符串当中是否包含字符(str.contain)

有一个ssqdatav2数据,要找到其中的深圳,并且替换成圳。

因为收集到的数据出现了错误,本来只有省份简写的地方却出现了深圳。
在这里插入图片描述
如何找到DF中包含深圳的数据?

cond=ssqdatav2['first'].str.contains('深圳')
ssqdatav2.loc[cond]

在这里插入图片描述
此时就找到first当中包含深圳的数据。

1、在first当中找到汉字

# 为分解firstprize定义函数
def fpp(x):
    if len(x)<=2:  # 判断是否只有汉字,还是也有数字
        return "待定" # 没有汉字的用待定表示
    else: # 使用正则表达式获取中文
        pattern="[\u4e00-\u9fa5]"  # 汉字专用字符ASCII区间
        pat=re.compile(pattern)
        return ','.join(pat.findall(x)) # 使用逗号作为每个省份的分隔符
#使用fp() 
ssqdatav2['fpprovince']=ssqdatav2['first'].apply(lambda x:fpp(x))
ssqdatav2.head()

在这里插入图片描述
将每个省份单独形成1列:

fpnames=['p01','p02','p03','p04','p05'] 
ssqdatav3[fpnames]=ssqdatav3['fpprovince'].str.split(',',expand=True)
ssqdatav3

在这里插入图片描述
去除掉None值,是None的地方变成空值:

# 逐个分割
ssqdatav3['p001']=ssqdatav3['fpprovince'].apply(lambda x:x if x.count(',')==0 else x.split(',')[0])
ssqdatav3['p002']=ssqdatav3['fpprovince'].apply(lambda x:x.split(',')[1] if x.count(',')>=1 else '')
ssqdatav3['p003']=ssqdatav3['fpprovince'].apply(lambda x:x.split(',')[2] if x.count(',')>=2 else '')
ssqdatav3['p004']=ssqdatav3['fpprovince'].apply(lambda x:x.split(',')[3] if x.count(',')>=3 else '')
ssqdatav3['p005']=ssqdatav3['fpprovince'].apply(lambda x:x.split(',')[4] if x.count(',')>=4 else '')

ssqdatav3.to_excel('ssqdatav3p05.xlsx',index=False)
ssqdatav3.head()

在这里插入图片描述

# 让双色球的期号ID成为订单号,7个号码都有对应的订单号,即每个期号都有7个订单号且分成不同的行
import numpy as np 
ssqdatav3['province2']=ssqdatav3['fpprovince'].apply(lambda x:x.split(','))
ssqdatav3

province2=ssqdatav3['province2'].to_list()
province2
rs=[len(r) for r in province2]
rs 
a=np.repeat(ssqdatav3['id'],rs)
a 
ssqdataprov=pd.DataFrame(np.column_stack((a,np.concatenate(province2))),columns=['ID','PROVINCE'])


# ssqdataprov=ssqdataprov[(ssqdataprov['PROVINCE']!='深')] # 等价
# ssqdataprov=ssqdataprov[~(ssqdataprov['PROVINCE']=='深')] # 等价
ssqdataprov=ssqdataprov[~(ssqdataprov['PROVINCE'].str.contains('深'))]

ssqdataprov

在这里插入图片描述
按照每个字段来划分,并且删去含有深的字段,这样就只保留圳字了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用 python 中的 in 关键字来判断一个字符串是否包含另一个字符串。 例如: str1 = "hello world" str2 = "world" if str2 in str1: print("str1 contains str2") else: print("str1 does not contain str2") # Output: "str1 contains str2" 也可以使用 `str.find()` 方法来判断,返回值为-1则不包含 例如: str1 = "hello world" str2 = "world" if str1.find(str2) != -1: print("str1 contains str2") else: print("str1 does not contain str2") # Output: "str1 contains str2" ### 回答2: 在Python中,可以使用以下方法来判断字符串包含关系: 1. 使用`in`关键字:使用`in`关键字可以判断一个字符串是否包含在另一个字符串中。例如,使用`"abc" in "abcdefg"`,如果字符串"abcdefg"中包含字符串"abc",则返回`True`;否则返回`False`。 2. 使用`find()`方法:字符串对象的`find()`方法可以用来查找一个子字符串在另一个字符串中的索引位置。如果找到,返回子字符串的起始索引,否则返回-1。例如,使用`"abcdefg".find("abc")`,如果字符串"abcdefg"中包含字符串"abc",则返回2(起始索引为2);否则返回-1。 3. 使用`startswith()`和`endswith()`方法:字符串对象的`startswith()`方法可以用来判断一个字符串是否以指定的子字符串开头;`endswith()`方法可以判断一个字符串是否以指定的子字符串结尾。这两个方法都返回布尔值。例如,使用`"abcdefg".startswith("abc")`,如果字符串"abcdefg"以子字符串"abc"开头,则返回`True`;否则返回`False`。 总之,以上就是判断字符串包含关系的几种方法。根据具体需求可以选择使用哪种方法来判断字符串包含关系。 ### 回答3: 在Python中,我们可以使用in关键字来判断一个字符串是否包含另一个字符串。这个关键字的语法是: ``` 判断字符串1 in 字符串2 ``` 如果字符串1包含字符串2中,则返回True;否则返回False。 例如,我们有两个字符串s1和s2: ``` s1 = "hello" s2 = "hello world" ``` 我们可以使用in关键字判断s1是否包含在s2中: ``` if s1 in s2: print("s2包含s1") else: print("s2不包含s1") ``` 运行结果将会是:“s2包含s1”,因为字符串"hello"是字符串"hello world"的一部分。 除了in关键字外,Python还提供了startswith()和endswith()方法,用于判断一个字符串是否以另一个字符串开头或结尾。这两个方法的语法分别是: ``` 字符串.startswith(子字符串) 字符串.endswith(子字符串) ``` 这里的子字符串可以是一个字符,也可以是多个字符组成的字符串。如果一个字符串以指定的子字符串开头或结尾,则返回True;否则返回False。 例如,我们有一个字符串s: ``` s = "hello world" ``` 我们可以使用startswith()方法判断s是否以"hello"开头: ``` if s.startswith("hello"): print("s以hello开头") else: print("s不以hello开头") ``` 运行结果将会是:“s以hello开头”。 综上所述,使用Python判断字符串包含关系可以使用in关键字、startswith()方法和endswith()方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温欣2030

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值