4

这是我的代码:

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

预期的输入将是http://www.google.com 所以预期的输出将变为:

Enter your website: http://www.google.com
Your website is: www.google.com

我正在寻找一种将“http://”、“https://”、“ftp://”全部放在一个列表中的方法,这样我就不必输入

site = site.replace("something", "something)

很多次

4

5 回答 5

4

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

>>> 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(). 无论哪种方式,结果都是一样的。

于 2012-12-24T00:12:06.420 回答
3

你可以使用这个:

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)
于 2012-12-24T00:10:31.970 回答
1
import re

site = raw_input('Enter your website: ')
# input http://www.google.com or https://www.google.com or ftp://www.google.com
site = re.sub('^(?:https?|ftp)://', '', site)
print "Your website is: " + site
于 2012-12-24T00:33:59.033 回答
0

使用字典:

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'
于 2012-12-24T00:12:34.017 回答
0

使用 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)
于 2012-12-24T03:32:37.257 回答