如何在不使用正则表达式的情况下排除python中括号中的关键字?

时间:2019-04-22 17:00:44

标签: python python-3.x

我有一个文件,正在按行读取和分隔,只想打印其中带有关键字“ Cat”的句子。但是,该文件包含以花括号(例如)格式化的助手。 {一旦猫进入房间}

全文:
猫。
{猫进入房间。}狗,你在这里做什么?

DOG。
我在做Cat时看起来像什么?我在看警察。

CAT。
我不知道你是那么大的粉丝!这个城市发生在哪个城市?

DOG。
{他把椅子转向猫。}猜一猜猫!

CAT。
我不知道!我只是想进行对话。

我能够打印包含要查找的关键字的行,但是当我打印时,它也会输出括号行。我尝试添加多个分隔符,但是每次尝试都会出现错误。

for i in catDog.split('\n'):
    if str('Cat')in i:
        print(i)

我希望输出:
我在做Cat时看起来像什么?
猜猜猫!

相反,我得到:
[猫进入房间。]
我在做Cat时看起来像什么?
[他把椅子交给猫。
猜猜猫!

我不希望任何人为我编写代码;还要指出正确的方向。

2 个答案:

答案 0 :(得分:1)

给出如下一行:

 {Cat enters the room.} Dog, what are you doing here?

从您的问题尚不清楚(a)该行是否应该匹配,(b)如果该行匹配,我们是否应该仅在{...}部分之外打印内容。在这两种情况下都假设是,您可以执行以下操作:

for i in catDog.split('\n'):
    if str('Cat') in i:
        parts = i.split('}', 1)
        print(parts[1 if len(parts) > 1 else 0])

哪位可以帮助您:

 Dog, what are you doing here?
What does it look like I'm doing Cat? I'm watching Cops.
 Take a guess Cat!

如果您想忽略开头{...}部分中的匹配项,则可以编写:

for i in catDog.split('\n'):
    parts = i.split('}', 1)
    if str('Cat') in parts[-1]:
        print(parts[1 if len(parts) > 1 else 0])

哪个可以让您:

What does it look like I'm doing Cat? I'm watching Cops.
 Take a guess Cat!

答案 1 :(得分:0)

如果您知道哪些类型的方括号/括号包含您的助手,则在寻找cat之前,请删除该部分字符串。

if i.startswith('{'):
  i = i[i.index("}") + 1:]

if str("Cat") in i:  
  print(i)