Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用正则表达式的情况下排除python中括号中的关键字?_Python_Python 3.x - Fatal编程技术网

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

如何在不使用正则表达式的情况下排除python中括号中的关键字?,python,python-3.x,Python,Python 3.x,我有一个文件,我正在阅读并按行分隔,只想打印包含关键字“Cat”的句子。不过,该文件包含以大括号格式化的旁白,例如{一旦Cat进入房间} 全文: 猫 {猫进了房间。}狗,你在这里干什么 狗 我在做什么,猫?我在监视警察 猫 我不知道你是个超级粉丝!这场比赛在哪个城市举行 狗 {他把椅子转向猫。}猜猜看,猫 猫 我不知道!我只是想和你谈谈 我可以打印包含我要查找的关键字的行,但是当我打印时,它也会输出大括号行。我尝试添加多个分隔符,但每次尝试都会出错 for i in catDog.split('

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

全文:

{猫进了房间。}狗,你在这里干什么


我在做什么,猫?我在监视警察


我不知道你是个超级粉丝!这场比赛在哪个城市举行


{他把椅子转向猫。}猜猜看,猫


我不知道!我只是想和你谈谈

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

for i in catDog.split('\n'):
    if str('Cat')in i:
        print(i)
我希望输出:
我在做什么,猫
猜猜看,猫

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


我不想让任何人为我写代码;另外,请给我指出正确的方向。

如果你知道哪些类型的括号/大括号包含你的旁白,你可以在寻找猫之前去掉那部分字符串

如果i.startswith('{'):
i=i[i.索引(“}”)+1:]
如果i中的str(“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就是那一行,因此代码将返回单词Cat。还有更多我们可以查询的行吗?通过“关键字”,你是指所有大写字母的
cat
,还是也必须以行开头?@EdekiOkoh对,是否可以排除带有大括号{}的行?@chepner关键字为“cat”,当然区分大小写。为了更容易理解,我还重新格式化了代码。如果{是字符串,您可以使用类似于if“{”的东西,而不是在I中。但是在看不到行的实际表示形式的情况下,很难看出这一点,但是不可能得到结束大括号的确切位置。}
index('}'))
提供位置您是否能够解释行:i=i[i.index(“}”)+1:]我很难理解如何解释它。该行将i的子字符串从
“}”+1
的位置分配回变量i
somestring[startIndex:endIndex]
返回一个子字符串,该子字符串从
startIndex
开始,在
endIndex-1
结束。离开
startIndex
out意味着从头开始,离开
endIndex
out意味着一直到结束<代码>索引('}')返回它找到的第一个匹配项的索引。