删除Python

时间:2017-10-03 14:53:07

标签: python string replace

我正在尝试在Python 2.7中删除字符串中的一些初始前面的字符。更具体地说,字符串是mx记录,看起来像10 aspmx2.googlemail.com。我需要删除前面的数字(可以是单数字或双数字)和空格字符。

这是我到目前为止提出的代码,但我被困了

mx_name = "10 aspmx2.googlemail.com"
for i in range(0,3):
    char = mx_name[i]
    if char == "0123456789 ":
        short_mx_name.replace(char, "")

由于某种原因,if语句无法正常工作,我不明白为什么。任何帮助将不胜感激。

谢谢。

6 个答案:

答案 0 :(得分:3)

您可以使用re.sub

import re
mx_name = "10 aspmx2.googlemail.com"
new_name = re.sub("^\d+\s", '', mx_name)

输出:

'aspmx2.googlemail.com'

正则表达式解释:

^:表达式的锚点,强制它在字符串的开头开始搜索

\d+:找到所有数字,直到找到非数字字符(在本例中为空格)。

\s:空白空白,必须包含在此示例中,以便替换也可以捕获数字和电子邮件之间的空格。

简而言之,^\d+\s在字符串的开头开始搜索,查找所有正在进行的数字,最后以空格为目标,以确保正则表达式不扫描电子邮件的一部分。

答案 1 :(得分:0)

对代码的最小修改是:

mx_name = "10 aspmx2.googlemail.com"
short_name = mx_name[:]
for i in range(0,3):
    char = mx_name[i]
    if char in "0123456789 ":
        short_name = short_name.replace(char, "", 1)

您的if正在检查字符是否为1234567890,而不是它是否包含在该集合中。还需要包括1以避免在字符串中进一步分隔数字和空格。

答案 2 :(得分:0)

mx_name.split()[1]

输出:

'aspmx2.googlemail.com'

答案 3 :(得分:0)

使用split功能

mx_name = "10 aspmx2.googlemail.com"
mx_name_url = mx_name.strip().split(' ')[1]
# aspmx2.googlemail.com

使用slice功能

mx_name = "10 aspmx2.googlemail.com"
mx_name[3:]
# aspmx2.googlemail.com

答案 4 :(得分:0)

您可以使用正则表达式:

import re

pattern=r'\b[\d\s]{1,3}\b'

string='10 aspmx2.googlemail.com'

new_string=re.sub(pattern,"",string)
print(new_string)

输出:

aspmx2.googlemail.com

单个数字:

string='1 aspmx2.googlemail.com'然后输出:

aspmx2.googlemail.com

答案 5 :(得分:0)

你应该使用regex;这个问题有很多正则表达式的答案,但如果你想要一个更抽象的解决方案,你可以使用:

m = "10 aspmx2.googlemail.com"
match = re.search('(?:\s)(\w.*@.*\.)', m)
match.group(1)

'aspmx2.googlemail.com'

此模式将匹配第一个空格后的任何电子邮件地址

  • (?:\s) - 非捕捉空间字符
  • (\w.*@.*\.) - 匹配字母数字字符和下划线后跟@以及后面的任何内容

这将匹配4123 name@email.comsome_text name@email.com等。