替换两个特定单词之间的某个值

Posted

技术标签:

【中文标题】替换两个特定单词之间的某个值【英文标题】:Replace certain value that is between two specific words 【发布时间】:2019-03-01 11:01:12 【问题描述】:

我正在尝试替换两个特定措辞之间的字符串列中的值

例如,从这个数据框我想改变

 df

 seller_name    url
 Lucas          http://sanyo.mapi/s3/e42390aac371?item_title=Branded%20boys%20Clothing&seller_name=102392852&buyer_item=106822419_1056424990 

到这里

url
http://sanyo.mapi/s3/e42390aac371?item_title=Branded%20boys%20Clothing&seller_name=Lucas&buyer_item=106822419_1056424990 

查看网址中seller_name=部分我换成了真名,我把数字换成了真名。

我想像从seller_name= 更改为第一个,然后从seller_name 看到。

这只是我想做的一个例子,但实际上我的数据框中有很多行,卖家名称中的数字长度并不总是相同

【问题讨论】:

您不能将& 的字符串拆分成一个列表,然后将seller_name 的列表元素替换为卖家名称并将列表连接回一个字符串吗?您也可以使用正则表达式替换***.com/questions/11475885/python-replace-regex 【参考方案1】:
seller_name = 'Lucas'
url = 'http://sanyo.mapi/s3/e42390aac371?item_title=Branded%20boys%20Clothing&seller_name=102392852&buyer_item=106822419_1056424990'
a = url.index('seller_name=')
b = url.index('&', a)
out = url.replace(url[a+12:b],seller_name)
print(out)

试试这个:

【讨论】:

OP 处理的是 pandas 而不是核心 python。无论如何,这对 OP 没有帮助【参考方案2】:

使用apply并将字符串替换为卖家名称

样本df

import pandas as pd
df=pd.DataFrame('seller_name':['Lucas'],'url':['http://sanyo.mapi/s3/e42390aac371?item_title=Branded%20boys%20Clothing&seller_name=102392852&buyer_item=106822419_1056424990'])

import re
def myfunc(row):
    return(re.sub('(seller_name=\d1,)','seller_name='+row.seller_name,row.url))
df['url']=df.apply(lambda x: myfunc(x),axis=1)

【讨论】:

【参考方案3】:

此解决方案不假定您的查询参数的顺序或您要替换的 ID 的长度。它假定您的查询是&-delimited,并且您有seller_name 参数,存在。

split_by_amps = url.split('&')
for i in range(len(split_by_amps)):
    if (split_by_amps[i].startswith('seller_name')):
        split_by_amps[i] += 'seller_name=' + 'Lucas'
        break

result = '&'.join(split_by_amps)

【讨论】:

【参考方案4】:

您可以使用正则表达式来替换名称的代码:

import pandas as pd
import re

#For example use a dictionary to map codes to names
seller_dic = 102392852:'Lucas'

for i in range(len(df['url'])):
    #very careful with this, if a url doesn't have this structure it will throw
    #an error, you may want to handle exceptions
    code = re.search(r'seller_name=\d+&',df['url'][i]).group(0)
    code = code.replace("seller_name=","")
    code = code.replace("&","")

    name = 'seller_name=' + seller_dic[code] + '&'

    url = re.sub(r'seller_name=\d+&', name, df['url'][i])

    df['url'][i] = url

【讨论】:

以上是关于替换两个特定单词之间的某个值的主要内容,如果未能解决你的问题,请参考以下文章

如何多次替换两个分隔符/字符串之间的唯一字符串

notepad++如何替换两个字符之间的内容?内容跨行

动态规划

如何实现两个数组之间值的替换

获取php中两个特定字符之间的单词

sql 替换 两特定字符(含特定字符)之间的字段