Python 如何按范围替换字符串中的字符?
例如:Python 如何按范围替换字符串中的字符?,python,string,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('.', "") 但我得到了这个错误: 索引器错误:字符串索引超出范围 由于单个=用于分配而非比较,如果行,则需要更改: if url[i] == '.': 请注意,使用replace
url = 'www.google.com/bla.bla'
我需要在最后7个字符中将“.”替换为“”
==>“www.google.com/blabla”
我试过:
for i in range(15,22):
if url[i]=='.':
url = url.replace('.', "")
但我得到了这个错误:
索引器错误:字符串索引超出范围
由于单个
=
用于分配而非比较,如果行,则需要更改:
if url[i] == '.':
请注意,使用replace()
时,您需要更新原始字符串(url
),因为replace()
将返回一个新字符串,而不是更新现有字符串
然而,我认为Patrick Haugh的一行回答是更好的解决方案,尽管我会对其进行如下修改(如果您总是使用google地址):
一行:
url = url[:-7] + (url[-7:].replace('.', ''))
感谢@Patrick指出了我之前答案中的缺陷
不要使用range()
,只需使用列表理解和字符串索引:
url = 'www.google.com/bla.bla'
url = url[:15] + ''.join([c for c in url[15:] if c!= '.'])
解释
url=
:将url的值重新分配给
url[:15]
:最后七个字符之前的url
中的所有字符
+
:plus
'.join([c代表url中的c[15:]如果c!='.]])
:字符串url
中的最后七个字符,仅当值不是时。然后将字符列表合并成一个字符串
修改后,url的值将为:'www.google.com/blabla'
print(“Hello World”)#诸如和或as之类的关键字仍然突出显示
更通用的方法是拆分URL,替换点,然后加入:
这将替换所有句点,这不是期望的行为。@PatrickHaugh感谢您指出这一点。我忘了测试它。我已经相应地修改了我的答案。如果它不是bla.bla
,而是bla.bla.bla.bla
?@alecxeurl=url[:15]+(url[15:].replace('.','')
这是假设我们总是从www.google.com开始的。我同意你的解决方案是最好的我的错误,我按照你说的方式编译后得到错误,我重新键入了错误的脚本。可能需要split(“/”,1)
。。。不sure@JoranBeasley:更好的是,str.partition(“/”)
只会拆分一次,并且不会被索引器阻塞,如果URL是没有路径的普通域:domain,sep,path=URL.partition(“/”)
,newurl=domain+sep+path.replace(“,”)
,它处理www.google.com/bla.bla
和www.google.com
这两个问题都没有问题。当没有路径时,sep
和path
仍然是空字符串,其中split
将返回长度为1的list
并在您请求索引1
时爆炸。
url = 'www.google.com/bla.bla'
url = url[:15] + ''.join([c for c in url[15:] if c!= '.'])
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'