python删除部分行

时间:2017-06-12 07:16:57

标签: python regex split

我有一个包含以下字符串的文本文件:

test2@gmail.com:123456
test2@hotmail.com:124554134
test1@yahoo.com:fdsfsdfe
test5@gmail.com:9875464

现在我想通过python删除.com之前的所有字符串。

我的代码(但错误):

import re

myline = open("file.txt" ,"r").readlines()

for single_line in myline:
    spline= single_line.rstrip()
    result = re.sub("\.com$", "", spline)
    print (result)

我该怎么办? 感谢

4 个答案:

答案 0 :(得分:3)

为什么使用re?简单地拆分字符串。

with open("file.txt" ,"r") as f:
    for single_line in f:
        print single_line.split(':')[1]

答案 1 :(得分:1)

根据your own answer使用.*\.com正则表达式判断,您希望删除所有行内容,直到最后一次出现com:。您可以使用str.rsplit

执行此操作
  

返回字符串中单词的列表,以分隔符字符串(从右开始)分隔。

请参阅Python demo

ss = ['test2@gmail.com:123456',
'test2@hotmail.com:124554134',
'test1@yahoo.com:fdsfsdfe',
'test5@gmail.com:9875464',
'no com']
res = [s.rsplit("com:")[1]  if "com:" in s else s for s in ss]
print(res)
# => ['123456', '124554134', 'fdsfsdfe', '9875464', 'no com']

因此,要么在最后一个com:之后得到该部分,要么得到整个字符串。

答案 2 :(得分:0)

我找到了答案。 我用这个:

self.getUsers = function (callback) {
    $.get("../API/Users/GetUsers/",callback);
}

答案 3 :(得分:0)

如果您只想选择:124554134:fdsfsdfe

您可以使用示例中显示的内容:https://regex101.com/r/i2iA7T/1/

:[\d\w]+

或者,如果您希望没有:的行只使用反向查找:

(?<=:)[\d\w]+

https://regex101.com/r/i2iA7T/2