【问题标题】:Removing dot (".") from the string using python使用python从字符串中删除点(“。”)
【发布时间】:2019-09-27 18:15:38
【问题描述】:

我有一个如下所示的数据:

  • www.r-computer.com
  • www.rscompass.com
  • www.italy.it 等等。

我编写了一个如下所示的脚本:

data['website']=data['Website address'].str.split('www.').str[1]
data['website']=data['website'].str.split('.com').str[0]

这基本上首先删除了“www”,然后第二个代码旨在从字符串中删除“.com”。 我应该得到的第一个和第二个数据点的结果应该是:

  • r 计算机
  • rscompass

但我得到的是“r”。所以我认为Python没有解释“。”作为点,但“com”之前的任何字符。

我想知道如何删除“.ru”、“.com”、“.it”等短语。请帮助。

【问题讨论】:

  • 字符串访问器str.split() 使用正则表达式(我认为),所以你想用'\.com''www\.' 来逃避野猫。

标签: python-3.x string pandas dataframe split


【解决方案1】:
import re


def get_domain(s):
    return re.sub("^www\.(.+)\.[^\.]+$", "\\1", s)

print(get_domain("www.r-computer.com"))   # r-computer


(未经测试) 返回站点名称和 .com .org 等。如果没有匹配则返回 None

import re


def get_domain(s):
    ret = re.findall("^www\.(.+)\.([^\.]+)$", s)
    return ret[0] if ret else (None, None)


# example
a, b = get_domain("www.italy.it")

if a and b:
    print(a)  # italy
    print(b)  # it

【讨论】:

  • 您能否解释一下这是如何工作的?就像如何在其他示例中实现这一点一样,例如以“.it”我们的 italy.it。谢谢。
  • 它寻找:1. 'www.'在行首 2. 尽可能多的行尾不是点 (.) 的字符 3. 1 和 2 之间的任何字符和一个点。然后它返回 3。换句话说:[行首]www.[返回此].[无点][行尾]
  • 太棒了!太感谢了。另外,关于如何检索域的任何想法?比如 .it、.org、.com 等
【解决方案2】:

对于提供的示例,这将起作用:

data['website']=data['website'].split('.')[1]

它的作用是获取第一个和第二个'.'之间的文本

【讨论】:

    【解决方案3】:

    你可以试试这个:

    yourstring.translate({ord('.'):None})
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2011-02-14
    • 2020-08-29
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多