从文本文件python中获取一系列单词

时间:2013-11-09 14:53:47

标签: python word range text-files

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

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

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

我希望获得" my"之间的所有字词。和#34; Alex"。

输出:

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

我想要一个带有句子&#34的输出文件;我的名字是Alex"。

2 个答案:

答案 0 :(得分: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'

如果字符串在Alex之后包含多个my并且您只想要最短匹配,那么请使用.*?

使用?

>>> 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())

答案 1 :(得分: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