字符串内的字符串

aat*_*ifh 2 python string

BASE_URL = 'http://foobar.com?foo=%s'

variable = 'bar'

final_url = BASE_URL % (variable)
Run Code Online (Sandbox Code Playgroud)

我得到这个'http://foobar.com?foo=bar'#它忽略了内部字符串.

但我想要这样的东西 'http://foobar.com?foo='bar''

谢谢你的回答.

你能帮我解决几乎同样的问题:

lst = ['foo', 'bar', 'foo bar']

[str(l) for l in lst if ' ' in l] 
Run Code Online (Sandbox Code Playgroud)

我明白['foo bar']但是我想要它[''foo bar'']

提前致谢.

Joa*_*uer 7

改变你BASE_URL要么

BASE_URL = "http://foobar.com?foo='%s'"
Run Code Online (Sandbox Code Playgroud)

要么

BASE_URL = 'http://foobar.com?foo=\'%s\''
Run Code Online (Sandbox Code Playgroud)


Hor*_*ann 6

如果您正在使用URL参数,则使用urllib.urlencode可能更安全:

import urllib

BASE_URL = 'http://foobar.com/?%s'
print BASE_URL % urllib.urlencode({
   'foo': 'bar',   
})
Run Code Online (Sandbox Code Playgroud)

关于报价:为什么你明确地想要它们?通常,您的HTTP包装器将为您处理所有这些.

关于你的第二个问题:如果你绝对也希望在那里有引号,你仍然必须在追加包含的字符串时逃避它们,或者(可能更安全的方式)将使用repr(...)

lst = ['foo', 'bar', 'foo bar']
lst2 = []

for l in lst:
    if ' ' in l:
        lst2.append(repr(l))
Run Code Online (Sandbox Code Playgroud)