如何用范围替换字符串中的字符?

时间:2016-10-05 16:30:29

标签: python string

例如:

url = 'www.google.com/bla.bla'

我需要替换'。'与''在最后7个字符 ==> 'www.google.com/blabla'

我试过了:

for i in range(15,22):
   if url[i]=='.':
       url = url.replace('.', "")

但是我收到了这个错误:

  

IndexError:字符串索引超出范围

4 个答案:

答案 0 :(得分:6)

更多通用方法拆分网址,替换点,然后加入

In [1]: url = 'www.google.com/bla.bla'

In [2]: s = url.split("/")

In [3]: s[1] = s[1].replace(".", "")

In [4]: "/".join(s)
Out[4]: 'www.google.com/blabla'

答案 1 :(得分:4)

在一行中:

url = url[:-7] + (url[-7:].replace('.', ''))

答案 2 :(得分:3)

您需要更改if行,因为单个=用于分配而非比较:

if url[i] == '.':

然后请注意,在使用replace()时,您需要更新原始字符串(url),因为replace()将返回一个新字符串,而不是更新现有字符串。

但是,我认为 @Patrick Haugh的一行答案是更好的解决方案,不过我会修改如下(如果你总是使用谷歌地址):

url = url[:15] + url[15:].replace('.', '')

答案 3 :(得分:0)

感谢@Patrick指出我之前回答中的缺陷。

不使用range(),而只使用列表理解和字符串索引:

url = 'www.google.com/bla.bla'
url = url[:15] + ''.join([c for c in url[15:] if c!= '.'])

解释

  • url =:将网址的值重新分配给...
  • url[:15]:最后七个之前url中的所有字符......
  • +:加上..
  • ''.join([c for c in url[15:] if c!= '.']):字符串url中的最后七个字符,仅当值不是.时。然后将字符列表连接成一个字符串。

修改后,网址的值为:'www.google.com/blabla'

print("Hello World") #keywords such as and or as are still highlighted