繁体   English   中英

Python - 在循环中针对不同变量运行相同的代码块

[英]Python - Running through the same code block in a loop for different variable

我有下面的一组代码,我在从名为df的源 Dataframe 提取一些数据后执行一些操作。

Customer_data = []


for i in range(0, len(df)):
    try:
        Customer = (re.search(r'(Customer"=>).*?(,)', df[i]).group(0).split('=>')[1].replace('"','').replace(',',''))
    except:
        Customer = ''
    
    Customer_data.append(Customer)

Customer = pd.DataFrame(Customer_data.append, columns = ['Customer'])

我试图为一组变量重复上述代码,其中我将用另一个变量替换变量Customer 我怎样才能概括上面的代码,以便它可以在循环中重复用于其他变量。

示例变量: ProductModelName

您可以将正则表达式定义为字符串,在其中添加来自变量的列名。 最后将该正则表达式传递给re.search

col_name = "Customer"
my_regex = r"('+re.escape(col_name)+'=>).*?(,)"

Customer_data = []

for i in range(0, len(df)):
    try:
        Customer = (re.search(my_regex, df[i]).group(0).split('=>')[1].replace('"','').replace(',',''))
    except:
        Customer = ''
    
    Customer_data.append(Customer)

Customer = pd.DataFrame(Customer_data.append, columns = ['Customer'])

您可以将它放在 function 中,您可以在其中传递变量的名称字符串(如 DataFrame 中所示)。 只需更改搜索部分以包含正确的名称r'({}"=>).*?(,)'.format(name)

def my_func(df, name):
    Customer_data = []    

    for i in range(0, len(df)):
        try:
            Customer = (re.search(r'({}"=>).*?(,)'.format(name), df[i]).group(0).split('=>')[1].replace('"','').replace(',',''))
        except:
            Customer = ''
    
        Customer_data.append(Customer)

    Customer = pd.DataFrame(Customer_data.append, columns = ['Customer'])

    return Customer 

# run function 
Product = my_func(df, 'Product')
ModelName= my_func(df, 'ModelName')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM