Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按范围替换字符串中的字符?_Python_String - Fatal编程技术网

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
?@alecxe
url=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'