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



我有一个文件,我正在阅读并按行分隔,只想打印包含关键字的句子:"猫"。该文件包含用大括号格式化的旁白,例如{一旦猫进入房间}

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

狗。
我在做猫是什么样子的?我在看警察。

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

狗。
{他把椅子转向猫。猜猜猫!

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

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

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

我期待输出:
我在做 Cat 看起来像什么?
猜猜猫!

相反,我得到:
[猫进入房间。
我在做猫是什么样子的?
[他把椅子转向猫。
猜猜猫!

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

给出一行如下:

{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!

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

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

最新更新