Python - 如何在 Python 中剪切字符串?

标签 python string

假设我有以下字符串:

http://www.domain.com/?s=some&two=20

我怎样才能去掉 & 之后的内容,包括 & 并拥有这个字符串:

http://www.domain.com/?s=some

最佳答案

好吧,回答最直接的问题:

>>> s = "http://www.domain.com/?s=some&two=20"

rfind 方法返回最右边子串的索引:

>>> s.rfind("&")
29

您可以使用切片运算符将所有元素获取到给定索引:

>>> "foobar"[:4]
'foob'

将两者放在一起:

>>> s[:s.rfind("&")]
'http://www.domain.com/?s=some'

如果您要特别处理 URL,您可能希望使用处理 URL 的内置库。例如,如果您想从上述查询字符串中删除 two:

首先,将URL整体解析:

>>> import urlparse, urllib
>>> parse_result = urlparse.urlsplit("http://www.domain.com/?s=some&two=20")
>>> parse_result
SplitResult(scheme='http', netloc='www.domain.com', path='/', query='s=some&two=20', fragment='')

只取出查询字符串:

>>> query_s = parse_result.query
>>> query_s
's=some&two=20'

把它变成一个dict:

>>> query_d = urlparse.parse_qs(parse_result.query)
>>> query_d
{'s': ['some'], 'two': ['20']}
>>> query_d['s']
['some']
>>> query_d['two']
['20']

从字典中删除 'two' 键:

>>> del query_d['two']
>>> query_d
{'s': ['some']}

将其放回查询字符串中:

>>> new_query_s = urllib.urlencode(query_d, True)
>>> new_query_s
's=some'

现在将 URL 重新拼接在一起:

>>> result = urlparse.urlunsplit((
    parse_result.scheme, parse_result.netloc,
    parse_result.path, new_query_s, parse_result.fragment))
>>> result
'http://www.domain.com/?s=some'

这样做的好处是您可以更好地控制 URL。就像,如果你总是想删除 two 参数,即使它被放在查询字符串的前面 ("two=20&s=some"),这仍然可以正确的事情。这可能是矫枉过正,这取决于你想做什么。

关于Python - 如何在 Python 中剪切字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8247792/

相关文章:

python - pow 运算符的计算错误

python - 以最少的摩擦管理 Paypal 账户?

regex - 如何从同一个 Perl 正则表达式中捕获多个匹配项?

java - 分配给单个对象的字符串数组实例

java - 如何在 Java Servlet 中将字符串转换为 double ?

c - 如何提取字符串的指定部分?

python - 数组包括来自 C++ 中的 python 的范围

python - 如何通过 API 将脚本上传到 YouTube?

python - 我的 python 代码在单独的学习应用程序上运行正常,但在电脑上运行不正常

javascript - 字符串在 JavaScript 中如何工作?