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

Python code to replace specific list of strings

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

我的txt文件中的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
Jack: Black

Jack: Sparrow

Jimm: Oliver

Jimm: Next

Jimm: Red

Ston: Cold

Bill: Black

我想从每行中删除前5个字符串(包括":"),这样期望的结果可能是

1
2
3
4
5
6
7
8
9
10
11
12
13
Black

Sparrow

Oliver

Next

Red

Cold

Black

我一直在尝试使用.replace(),但我既不能确定字符串,也不能使用字符串切片(它将只剪切第一行中的几个字符)

当前我的程序如下:

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

电流输出为

1
2
3
4
5
6
7
8
9
10
11
12
13
 Black

 Sparrow

Jimm: Oliver

Jimm: Next

Jimm: Red

Ston: Cold

Bill: Black


迭代文件中的每一行:

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


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

1
2
3
4
"Jack: Black
Jack: Sparrow
Jimm: Oliver
"
# and so on

所以,a[:5] == 'Jack:',您可以适当地替换所有出现的,但这对不包含这些字符的行没有任何作用。

对于您试图实现的目标,readlines()split结合使用可能更为有用:

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

也就是说,"对于文件中的每一行,用空格分隔,然后给我第二部分"。这给了b == ["Black","Sparrow","Oliver", ...],意味着您不局限于第一部分正好是5个字符的行。


使用split

1
2
3
4
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()

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

1
2
3
4
5
6
7
8
9
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']