Anjali
Anjali

Reputation: 11

Remove string starting from specific characters in python

I have the following data in a file:

Neighbor        V          TblVer  InQ OutQ Up/Down  State/PfxRcd
10.230.2.91     4          136041    0    0 35w6d        1178
CHN_RAY_901_1AC_CASR903R004#   exit

Neighbor        V          TblVer  InQ OutQ Up/Down  State/PfxRcd
10.229.5.239    4          890585    0    0 7w5d         1177
10.229.6.239    4          890585    0    0 7w5d         1173
CHN_MAR_905_1AC_CASR903R066#   exit

10.229.30.110

I have to remove the lines starting from CHN and have the output like:

Neighbor        V          TblVer  InQ OutQ Up/Down  State/PfxRcd
10.230.2.91     4          136041    0    0 35w6d        1178

Neighbor        V          TblVer  InQ OutQ Up/Down  State/PfxRcd
10.229.5.239    4          890585    0    0 7w5d         1177
10.229.6.239    4          890585    0    0 7w5d         1173

10.229.30.110

I have tried:

b = ' '.join(word for word in content.split(' ') if not word.startswith('CHN'))

where content is my data I want to remove CHN from, but it's not working.

Could you suggest ways to achieve this. Can this be done without using regular expressions? Thanks in advance.

Upvotes: 1

Views: 77

Answers (3)

BPL
BPL

Reputation: 9863

file = """    Neighbor        V          TblVer  InQ OutQ Up/Down  State/PfxRcd
10.230.2.91     4          136041    0    0 35w6d        1178
CHN_RAY_901_1AC_CASR903R004#   exit

Neighbor        V          TblVer  InQ OutQ Up/Down  State/PfxRcd
10.229.5.239    4          890585    0    0 7w5d         1177
10.229.6.239    4          890585    0    0 7w5d         1173
CHN_MAR_905_1AC_CASR903R066#   exit

10.229.30.110
"""

output = [line for line in file.splitlines() if not line.startswith('CHN')]
print "\n".join(output)

Upvotes: 2

Angus
Angus

Reputation: 359

for line in file:
  if not line[0:3] == "CHN":
    write_line
  else:
    remove_line

Upvotes: 1

Eugene Yarmash
Eugene Yarmash

Reputation: 149823

It may be easier to work with individual lines instead of whole file contents:

with open("file") as f:
    lines = [line for line in f if not line.startswith("CHN")]
    filtered = "".join(lines)

Upvotes: 2

Related Questions