在Python中使用replace()函数一次替换多个文本(字符串)

在Python中使用replace()函数一次替换多个文本(字符串),python,replace,Python,Replace,这是我的密码: start_j = raw_input('Enter a name: ') start_j = start.replace("A", "J") start_j = start.replace("B", "J") start_j = start.replace("C", "J") print "Your name is " + start_j 有没有办法把所有的字母都放在一个列表中,这样我就不必一次又一次地重复同样的过程,直到我找到字母“Z”为止 我尝试过使用循环,但似乎仍然无法

这是我的密码:

start_j = raw_input('Enter a name: ')
start_j = start.replace("A", "J")
start_j = start.replace("B", "J")
start_j = start.replace("C", "J")
print "Your name is " + start_j
有没有办法把所有的字母都放在一个列表中,这样我就不必一次又一次地重复同样的过程,直到我找到字母“Z”为止 我尝试过使用循环,但似乎仍然无法找到正确的方法

下面是一个场景: 系统将提示用户输入名称。 如果名称包含除“J”以外的字母,则将使用replace()函数自动替换它。 因此,它将从J开始打印输入

下面是一个例子:

site = raw_input('Enter your website: ')
site = site.replace("http://", "")
site = site.replace("https://", "")
site = site.replace("ftp://", "")
print "Your website is: " + site
预期的投入将是: 因此,预期的结果将是:

Enter your website: http://www.google.com
Your website is: www.google.com
我正在寻找一种方法,将“http://”、“https://”、“ftp://”全部放在一个列表中,这样我就不必输入

site = site.replace("something", "something)
很多时候,您可以使用以下方法:

remove_from_start = ["http://", "https://", "ftp://"]
for s in remove_from_start:
    if site.startswith(s):
        site = site[len(s):]
        break
或基于正则表达式的解决方案:

import re
regex = '^(https?|ftp)://'
site = re.sub(regex, '', site)

您可以使用正则表达式一次替换所有字母:

>>> import re
>>> re.sub(r'[A-Z]', 'J', 'This Is A Test Name')
'Jhis Js J Jest Jame'

(编辑后):可以使用
.startswith()
和字符串切片:

>>> name = 'A Name'
>>> 
>>> if not name.startswith('J'):
...     name = 'J' + name[1:]
... 
>>> name
'J Name'
虽然我不知道为什么您甚至需要使用
.startswith()
进行检查。无论哪种方法,结果都是一样的。

使用字典:

In [100]: import string

In [101]: dic=dict.fromkeys(string.ascii_uppercase,"J")

In [104]: start_j = raw_input('Enter a name: ')
Enter a name: AaBbCc

In [105]: "".join(dic.get(x,x) for x in start_j)
Out[105]: 'JaJbJc'
编辑:

In [124]: dic={"https:":"","http:":"","ftp:":""}

In [125]: strs="http://www.google.com"

In [126]: "".join(dic.get(x,x) for x in strs.split("//"))
Out[126]: 'www.google.com'

使用re、dict和lambda:

import re
replacte_to = {
    "http://": "",
    "https://": "",
    "ftp://": "",
}
re.sub("^(ht|f)tps?://", lambda match: replacte_to[match.group(0)], YOUR_INPUT_STRING)

start_j是一个变量,需要输入名称。如果任何名称以“J”以外的字母开头,它将被自动替换。@MaxWayne:以
replace
检查整个字符串,而不仅仅是第一个字符。发布一些示例输入和输出。你的编辑真的改变了很多问题。你最初的问题还不够清楚。如果我不清楚,很抱歉。现在是早上5点,我有一阵子没睡了。
import re
replacte_to = {
    "http://": "",
    "https://": "",
    "ftp://": "",
}
re.sub("^(ht|f)tps?://", lambda match: replacte_to[match.group(0)], YOUR_INPUT_STRING)