Python在某些字符串后提取数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python在某些字符串后提取数字相关的知识,希望对你有一定的参考价值。

我有一个数据框,如下所示

import pandas as pd
page = ['A','B','C','D']
URL = ['aaa.bbb3333.ccc.de12345.dddd.cccc','ccc2222.ddd.aaa.ho16589.ddd','ddd16893.aaa.de59875','aaa15875.ccc.ddd.ho13532']
df = pd.DataFrame({'page':page,'URL':URL})

我想创建一个在'de'或'ho'之后提取数字的列。请注意,数字的长度可能不同,并且'de'或'ho'的位置也可能不同。

我的代码如下:

import re
def extract_number(df,url):
    for url in df:
        if df[url].str.contains('de', na = False) == True:
            match = re.search('de:P(d+)')
        elif df[url].str.contains('ho', na = False) == True:
            match = re.search('ho:P(d+)')
        else:
            match = 'not found'
        print(match)

out = extract_number(df, 'URL')

它返回错误'系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。'

所需的输出应如下所示:

import pandas as pd
page = ['A','B','C','D']
URL = ['aaa.bbb.ccc.de12345.dddd.cccc','ccc.ddd.aaa.ho16589.ddd','ddd.aaa.de59875','aaa.ccc.ddd.ho13532']
ID = ['12345','16589','59875','13532']
df = pd.DataFrame({'page':page,'URL':URL,'ID':ID})

百万感谢!!!

答案

使用str.extract并带有正向外观:

df["num"] = df["URL"].str.extract(r"(?<=de|ho)(d+)")

print (df)

#
  page                                URL    num
0    A  aaa.bbb3333.ccc.de12345.dddd.cccc  12345
1    B        ccc2222.ddd.aaa.ho16589.ddd  16589
2    C               ddd16893.aaa.de59875  59875
3    D           aaa15875.ccc.ddd.ho13532  13532

以上是关于Python在某些字符串后提取数字的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pandas DataFrame 中的字符串模式后提取数字并在 python 中创建新功能

Python批量提取txt文件中的特定字符后的数字?

在字符串/列表中添加某些数字,然后变成字母

如何从python中的图像中删除某些文本?

python编写一段代码,要求用户从键盘输入一字符串,程序负责提取出其中的数字字符,并显示。 大神求教

C++ 正则检测字串,提取数字以及字符