Python 使用正则表达式提取数字

Python 使用正则表达式提取数字,python,pandas,dataframe,Python,Pandas,Dataframe,我想用正则表达式提取数字 df['price'][0] 有 '[<em class="letter" id="infoJiga">3,402,000</em>]' “[3402000]” 我想提取3402000 如何在pandas dataframe中获取该值?如果该值是字符串,请尝试以下代码 #your code df['price'][0] returns '[<em class="letter" id="infoJiga">3,402,

我想用正则表达式提取数字

df['price'][0] 

'[<em class="letter" id="infoJiga">3,402,000</em>]'
“[3402000]”
我想提取
3402000


如何在pandas dataframe中获取该值?

如果该值是字符串,请尝试以下代码

#your code    
df['price'][0] returns  '[<em class="letter" id="infoJiga">3,402,000</em>]'

let us say this is x.

y = ''.join(c for c in x.split('>')[1]  if c.isdigit()).strip()
print (y)

output: 3402000
#您的代码
df['price'][0]返回'[3402000]'
假设这是x。
y='''.join(c代表x.split('>')[1]如果c.isdigit()).strip()中的c
打印(y)
产出:3402000

希望它能起作用。

假设与环境无关的最简单的正则表达式可能是
([\d,]*)
。您无法使用熊猫的函数。

所有值的格式是否相同?如果是这样,可以使用简单的正则表达式提取数值,然后将其转换为
int

import pandas as pd
import re

test_data = ['[<em class="letter" id="infoJiga">3,402,000</em>]','[<em class="letter" id="infoJiga">3,401,000</em>]','[<em class="letter" id="infoJiga">3,400,000</em>]','[<em class="letter" id="infoJiga">2,000</em>]']
df = pd.DataFrame(test_data)
>>> df[0]
0    [<em class="letter" id="infoJiga">3,402,000</em>]
1    [<em class="letter" id="infoJiga">3,401,000</em>]
2    [<em class="letter" id="infoJiga">3,400,000</em>]
3        [<em class="letter" id="infoJiga">2,000</em>]
Name: 0, dtype: object

看起来像是用正则表达式解析html对我来说-淘气的开发者。。。欢迎来到stackoverflow。显示数据、所需输出和您尝试的内容。你可能还想读一读《非常感谢》。多亏了你的帮助,我解决了我的问题:)不客气。请将问题标记为已回答:)如果此代码工作正常,请接受答案并投票给其他人使用。
def get_numeric(data):
    match = re.search('>(.+)<', data)
    if match:
        return int(match.group(1).replace(',',''))    
    return None
df[1] = df[0].apply(get_numeric)
>>> df[1]
0    3402000
1    3401000
2    3400000
3       2000
Name: 1, dtype: int64