如何从文本中的特定世界读取文本告诉python中文本文件中的下一个空间

我有一个文本文件,其中包含交换机名称和每个交换机的端口,例如:


switch 1

[1] server 1

[2] server 2

[3] server 3

[4] server 4


 some text that no one need 


 switch 2

 [1] server 1

 [2] server 2

 [3] server 3

 [4] server 4

现在我想要做的是拆分文本,当它读取开关 1 时拆分开始,当它读取一个空格或空行时停止,问题是我有一些文本,我在中间不需要任何帮助


函数式编程
浏览 165回答 1
1回答

繁星coding

如果我没看错,您希望保留以下所有行:从单词开始 switch跟随在以以下开头switch但在下一个空行之前的行之后这不是太难:keptlines = []with open(myfile) as f:    for line in f:        if line.startswith('switch '):            keptlines.append(line)            for line in f:  # Continue iterating f for additional lines to keep                if not line.rstrip():                    break  # We hit an empty line, return to looking for switch                keptlines.append(line)如果您想将各种开关分开,则有多种不同的方法(例如,dict按开关编号键控,以lists 行作为值),但这是基本模式。为了完整起见,有一种变体方法可以使用 来简化代码itertools,在文件顶部添加导入from itertools import takewhile并替换:            for line in f:  # Continue iterating f for additional lines to keep                if not line.rstrip():                    break  # We hit an empty line, return to looking for switch                keptlines.append(line)只需:            keptlines.extend(takewhile(str.rstrip, f))类似的方法可以将外部循环推入dropwhile调用中,但这会变得非常复杂(您无法在dropwhile不丢失数据的情况下移除包装器,并且您必须为每个新switch块重新包装它),因此它可能不值得.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python