Python代码替换特定的字符串列表

时间:2014-05-21 08:24:52

标签: python string python-2.7 replace slice

嘿我现在正在使用python来读取txt文件中的字符串列表,我想在前面切断多个字符串,例如

我的txt文件中的示例:

Jack: Black

Jack: Sparrow

Jimm: Oliver

Jimm: Next

Jimm: Red

Ston: Cold

Bill: Black

我想从每一行中删除前5个字符串(包括':'),以便获得所需的结果

Black

Sparrow

Oliver

Next

Red

Cold

Black

我一直在尝试使用.replace(),但是我无法确定字符串既不使用字符串切片(它只会剪切第一行中的少数几个字符)

目前我的程序如下:

with open("C:\\Documents and Settings\\Zha\\Desktop\\test3.txt", "r") as text:
    a = text.read()
    b = str(a).replace(a[:5],'')
    print b

,当前输出为

 Black

 Sparrow

Jimm: Oliver

Jimm: Next

Jimm: Red

Ston: Cold

Bill: Black

4 个答案:

答案 0 :(得分:2)

迭代文件中的每一行:

with open(filename, "r") as text:
    for line in text:
        print line[6:]

答案 1 :(得分:1)

使用split

with open("C:\\Documents and Settings\\Zha\\Desktop\\test3.txt", "r") as text:
    for line in text:
        if line.strip():
            print line.split(':')[1].strip()

答案 2 :(得分:1)

a是整个文件,作为字符串:

"Jack: Black\nJack: Sparrow\nJimm: Oliver\n" # and so on

所以a[:5] == 'Jack:',您可以适当地替换所有出现的内容,但这并不会对不包含这些字符的行做任何事情。

对于你想要实现的目标,readlines()(给出一个列表,其中每个项目是一行作为字符串)与split结合使用可能更有用:

b = [line.split()[1] for line in text.readlines()]

即。 "对于文件中的每一行,在空格上拆分并给我第二部分"。这给出了b == ["Black", "Sparrow", "Oliver", ...],意味着您不限于第一部分恰好是5个字符的行。

答案 3 :(得分:0)

您可以使用以下代码执行此操作:

with open('input.txt') as f:
  f = f.readlines()

f = [i[6:].strip() for i in f]

print f

[OUTPUT]
['Black', 'Sparrow', 'Oliver', 'Next', 'Red', 'Cold', 'Black']