我正在尝试读取大型数据集并在值与正则表达式匹配时替换一些字符串。
我发现了这个字符串:
result = ds['pagePath'].str.extract( \
'^\/([^\?]*)\?[^\?]*Code=[^\?]*Reference').str.strip()
看起来它正在工作并提取匹配行的文本,但现在我需要格式化为此值:
result = '/NewUrl' + result_matching_column + '/somethingelse'
最好的方法是什么?
答案 0 :(得分:0)
这可能有效,但效率低下:
import numpy as np
ds['extraction'] = ds['pagePath'].str.extract('^\/([^\?]*)\?[^\?]*Code=[^\?]*Reference').str.strip()
ds['pagePath'] = np.where(pd.notnull(ds['extraction']),
r'/NewUrl' + ds['extraction'] + r'/somethingelse',
ds['pagePath'])
ds = ds.drop('extraction', 1)
答案 1 :(得分:0)
我使用lambda和函数
df['pagePath'].apply(lambda x: regex_lev(x))
这是功能:
def regex_lev(x):
url = x
url = url.replace('/?ReturnUrl', '/xReturnUrl')
regex =r"^\/([^\?]*)\?[^\?]*communityCode=[^\?]*paymentReference"
if re.search(regex, url):
match = re.search(regex, url)
result= '/' + match.group(1) + '/payment-complete'
result = result.replace('//','/')
result = result.replace('/xReturnUrl', '/?ReturnUrl')
print("Full match: %s" % (result))
return result
else:
print("NO match: %s" % (x))
return x