如何在python中排除括号中的关键字而不使用regex?

2024-06-09 14:32:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,我正在阅读和分隔行,只想打印的句子,其中有关键字:“猫”。不过,这个文件包含了用大括号格式化的aside,例如{一旦Cat进入房间}

全文:
猫。
{猫进了房间。}狗,你在这里干什么?你知道吗

狗。
我在做什么,猫?我在监视警察。你知道吗

猫。
我不知道你是个大粉丝!这件事发生在哪个城市?你知道吗

狗。
{他把椅子转向猫。}猜猜看猫!你知道吗

猫。
我不知道!我只是想和你谈谈。你知道吗

我可以打印包含关键字的行,但是当我打印时,它也会输出大括号行。我尝试添加多个分隔符,但每次尝试都会出错。你知道吗

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

我期望输出:
我在做什么,猫?
猜猜看,猫!你知道吗

相反,我得到:
[猫进入房间。]
我在做什么,猫?
[他把椅子转向猫。]
猜猜看,猫!你知道吗

我不想让任何人为我写代码;更重要的是给我指明了正确的方向。你知道吗


Tags: 文件infor关键字大括号粉丝cat句子
2条回答

如果你知道什么类型的括号/大括号包含你的副词,你删除了字符串的一部分,然后再寻找猫。你知道吗

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

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

给出这样一句话:

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

相关问题 更多 >