简体   繁体   English

从python中的特定字符开始删除字符串

[英]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: 我必须删除从CHN开始的行,并输出如下:

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. 我要从中删除CHN的内容是我的数据,但是它不起作用。

Could you suggest ways to achieve this. 您能否提出实现此目标的方法? Can this be done without using regular expressions? 不使用正则表达式就可以做到吗? Thanks in advance. 提前致谢。

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)
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)
for line in file:
  if not line[0:3] == "CHN":
    write_line
  else:
    remove_line

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM