0

我有一个文本文件,我的目标是生成一个输出文件,其中包含两个特定单词之间的所有单词。

例如,如果我有这个文本:

askdfghj... Hello world my name is Alex and I am 18 years all ...askdfgj.

我想获得“我的”和“亚历克斯”之间的所有单词。

输出:

my name is Alex

我想到了......但我不知道如何创建范围:

if 'my' in open(out).read():
        with open('results.txt', 'w') as f:
            if 'Title' in open(out).read():
                f.write('*')
        break

我想要一个带有句子“我的名字是亚历克斯”的输出文件。

4

2 回答 2

2

你可以regex在这里使用:

>>> import re
>>> s = "askdfghj... Hello world my name is Alex and I am 18 years all ...askdfgj."
>>> re.search(r'my.*Alex', s).group()
'my name is Alex'

如果字符串包含多个Alexaftermy并且您只想要最短的匹配项,则使用.*?

?

>>> s = "my name is Alex and you're Alex too."
>>> re.search(r'my.*?Alex', s).group()
'my name is Alex'

没有?

>>> re.search(r'my.*Alex', s).group()
"my name is Alex and you're Alex"

代码:

with open('infile') as f1, open('outfile', 'w') as f2:
    data = f1.read()
    match = re.search(r'my.*Alex', data, re.DOTALL)
    if match:
        f2.write(match.group())
于 2013-11-09T14:56:35.230 回答
0

您可以使用正则表达式my.*Alex

data = "askdfghj... Hello world my name is Alex and I am 18 years all ...askdfgj"
import re
print re.search("my.*Alex", data).group()

输出

my name is Alex
于 2013-11-09T14:56:40.107 回答