打印具有匹配索引的String部分

时间:2016-10-16 16:23:17

标签: python python-3.x

我试图创建一个程序,它接受一个给定的文本,检查以查看整个文本中的哪些索引(")并在引号之间打印任何内容(" )即" xyz" blablabla" abc"。在这种情况下,将打印0到4之间的xyz和16到20之间的abc。我已经让索引部分工作,但似乎无法找到在这些索引范围内打印任何内容的方法。这是我的代码:

text = '"bleed" seed "deed"'

index = 0

a = 0

find = int(input("Would you like to find all the links in the file?\n If yes, enter 1:  "))

def Link_Finder(a):

    index = 0

    if find == 1:

        while index < len(text):

            index = text.find('"', index)

            if index == -1:

                break


            print('" found at', index)


            index = index + 2

    return index

Link_Finder(a)

print(text[index:])

我只打印索引以供我自己参考。我对Python很陌生,所以我还不熟悉复杂的东西。

在我看来,这样做的一种方法是返回索引值,然后使用返回的值打印所需的文本。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您不介意使用正则表达式,我认为这是一个更简单的解决方案:

import re
print(re.findall(r'"([^"]*)"', text))

如果没有,您可以使用link_finder功能:

def link_finder(s):
    index = 0
    while index < len(s):
        index = s.find('"', index)
        if index == -1:
            break
        yield index
        index = index + 2

然后成对遍历结果

results = list(link_finder(text))

for start, end in zip(results[::2], results[1::2]):
    print text[start+1:end]