在python中替换第一部分字符串的单词

时间:2014-04-04 11:41:04

标签: python

在Python中,我想在以下字符串中将“be”替换为“nl”:

http://test.nl/be/nl/product/abc-dadf-adsfsw-12234/

BUT !!我希望它检查BEFORE / product /部分,因为如果/ product /后面的字符串包含“be”,它必须保持不变。

示例:

http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/(部分BEFORE / product /包含no,所以必须保持不变)

http://test.nl/be/nl/product/abc-dadf-be-adsfsw-12234/(部分BEFORE / product /包含,因此必须用nl替换,因此它变为http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/

http://test.be/nl/nl/product/abc-dadf-be-adsfsw-12234/(部分BEFORE / product /包含,因此必须用nl替换,因此它变为http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/

3 个答案:

答案 0 :(得分:1)

为此使用正向前瞻。

url = '''http://test.nl/be/nl/product/abc-dadf-adsfsw-12234/'''
url = re.sub("/be/(?=.*/product/)", "/nl/", url)
# or using word boundary around `be` to handle .be/ .be. etc
# url = re.sub("\bbe\b(?=.*/product/)", "nl", url)
print url

这个积极的预测(?=.*/product/)正在检查前面/product/后是否存在/be/

但请记住,这个正则表达式适用于/be/之前的任何/product/。总的来说,我说的是多次出现。

答案 1 :(得分:0)

我能想到的最简单的方法就是用正则表达式拆分字符串。这里有一些代码可以为您提供所需的输出。

import re #python's regular expression module
string = 'http://test.nl/be/nl/product/abc-dadf-adsfsw-12234/'

search = re.match('(.*)(product.*)', string)
first_part = search.group(1)
next_part = search.group(2)

first_part = first_part.replace('be', 'nl')

new_string = first_part + next_part
print(new_string)

答案 2 :(得分:0)

没有正则表达式(没有导入)的选项:

elements = raw_input('URL?\n').split('/')

for i in range(0, elements.index('product')):
    elements[i] = elements[i].replace('be', 'nl')

print '/'.join(elements)

试验:

http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/
  -> http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/

http://test.nl/be/nl/product/abc-dadf-be-adsfsw-12234/
  -> http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/

http://test.be/nl/nl/product/abc-dadf-be-adsfsw-12234/
  -> http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/