我有以下代码:
url = 'abcdc.com'
print(url.strip('.com'))
Run Code Online (Sandbox Code Playgroud)
我期望: abcdc
我有: abcd
现在我做
url.rsplit('.com', 1)
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
Ste*_*eef 498
strip并不意味着"删除此子字符串".x.strip(y)视为y一组字符,并从中删除该组中的任何字符x.
相反,你可以使用endswith和切片:
url = 'abcdc.com'
if url.endswith('.com'):
url = url[:-4]
Run Code Online (Sandbox Code Playgroud)
或使用正则表达式:
import re
url = 'abcdc.com'
url = re.sub('\.com$', '', url)
Run Code Online (Sandbox Code Playgroud)
小智 77
如果你确定字符串只出现在最后,那么最简单的方法是使用'replace':
url = 'abcdc.com'
print(url.replace('.com',''))
Run Code Online (Sandbox Code Playgroud)
yai*_*chu 42
def strip_end(text, suffix):
if not text.endswith(suffix):
return text
return text[:len(text)-len(suffix)]
Run Code Online (Sandbox Code Playgroud)
小智 38
因为似乎没有人指出这个问题:
url = "www.example.com"
new_url = url[:url.rfind(".")]
Run Code Online (Sandbox Code Playgroud)
这应该比使用的方法更有效,split()因为没有创建新的列表对象,并且此解决方案适用于具有多个点的字符串.
Xav*_*hot 24
从 开始Python 3.9,您可以使用removesuffix:
'abcdc.com'.removesuffix('.com')
# 'abcdc'
Run Code Online (Sandbox Code Playgroud)
dag*_*agw 23
取决于您对您的网址的了解以及您正在尝试做的事情.如果您知道它将始终以'.com'(或'.net'或'.org')结尾
url=url[:-4]
Run Code Online (Sandbox Code Playgroud)
是最快的解决方案.如果它是一个更通用的URL,那么你可能更好地查看python附带的urlparse库.
另一方面,如果你想在最终''之后删除所有内容.然后在一个字符串中
url.rsplit('.',1)[0]
Run Code Online (Sandbox Code Playgroud)
将工作.或者如果你想要一切都达到第一个'.' 然后试试
url.split('.',1)[0]
Run Code Online (Sandbox Code Playgroud)
Joh*_*tta 10
如果你知道它是一个扩展,那么
url = 'abcdc.com'
...
url.rsplit('.', 1)[0] # split at '.', starting from the right, maximum 1 split
Run Code Online (Sandbox Code Playgroud)
这同样适用于abcdc.com或www.abcdc.com或abcdc.[anything]更具可扩展性.
Dav*_*ter 10
在一行中:
text if not text.endswith(suffix) or len(suffix) == 0 else text[:-len(suffix)]
Run Code Online (Sandbox Code Playgroud)
对于网址(因为它似乎是给定示例的主题的一部分),可以做这样的事情:
import os
url = 'http://www.stackoverflow.com'
name,ext = os.path.splitext(url)
print (name, ext)
#Or:
ext = '.'+url.split('.')[-1]
name = url[:-len(ext)]
print (name, ext)
Run Code Online (Sandbox Code Playgroud)
两者都会输出:
('http://www.stackoverflow', '.com')
str.endswith(suffix)如果您只需要拆分".com"或任何特定的内容,也可以将其组合使用.
DSCLAIMER此方法有一个严重缺陷,即分区未锚定到 url 的末尾,并且可能返回虚假结果。例如,URL“www.comcast.net”的结果是“www”(不正确)而不是预期的“www.comcast.net”。因此,这个解决方案是邪恶的。除非您知道自己在做什么,否则不要使用它!
url.rpartition('.com')[0]
Run Code Online (Sandbox Code Playgroud)
这相当容易输入,并且当 .com 中缺少后缀“.com”时也能正确返回原始字符串(没有错误)url。
小智 5
假设您想要删除域名,无论它是什么(.com、.net 等)。我建议找到.并删除从那时起的所有内容。
url = 'abcdc.com'
dot_index = url.rfind('.')
url = url[:dot_index]
Run Code Online (Sandbox Code Playgroud)
这里我用来解决像这样的 url 应该简化为 namerfind的问题。abcdc.com.netabcdc.com
如果您还担心www.s,则应该明确检查它们:
if url.startswith("www."):
url = url.replace("www.","", 1)
Run Code Online (Sandbox Code Playgroud)
替换中的 1 用于奇怪的边缘情况,例如www.net.www.com
如果您的网址变得比这更狂野,请查看人们回复的正则表达式答案。