检索拆分文本

时间:2017-06-26 15:38:11

标签: python text

for root, dirs, files in os.walk(path):
    for file in files:    
        print(os.path.join(d, file))

        for i in xrange(0, len(files)):
            for files[i] in files:
                corpus = open(os.path.join(d, files[i]), 'rb')
                corpus = corpus.read()
#                corpus = [line.lstrip() for line in corpus.split("\n")]
                lne = []
#                print(lne)

                for line in corpus.split("\n"):

                    line = re.sub(' +', ' ', line)
                    line = line.upper()

                    lne.append(line.lstrip())

我尝试了line2 = next(iter(line))

但它不会产生我想要的结果。当我将文本语料库分成新行时,我希望下一个(iter(line))可以工作。所以我想要的是获取它循环的代码行,但也在'line'之后得到一行。

2 个答案:

答案 0 :(得分:1)

我从两个文件开始:

<强> one.text

this + that
then now

two.text

science poetry
pigs + cows

...在"C:\scratch\sample\two.txt"文件夹中。

我想提到的主要内容是在Python中使用一种相对较新的方法来处理文件和文件夹的内容,模块pathlib,这将在第11章中介绍。它通常会让人生活更容易。

>>> from pathlib import Path
>>> for file_name in Path('c:/scratch/sample').glob('*'):
...     with open(str(file_name)) as f:
...         result_line = []
...         for line in f.readlines():
...             result_line.append(line.strip().upper().replace(' +', ' '))
...         print (' '.join(result_line))
...         

THIS  THAT THEN NOW
SCIENCE POETRY PIGS  COWS

我理解你的意思是你想用一个空格替换'+'的出现,并将整行变成大写。

我还要提到:(a)最好避免在Python语言中使用可能(或可能不是)特殊字的file这样的名称,因为使用它们会使调试变得困难,(b)当with文件时使用open是个好主意,因为当你离开with的范围时,系统会安排关闭文件,(c)一个令人讨厌的问题我使用pathlib查找是必须使用str之类的结果(在本例中为file_name)将其转换为open可以使用的文件名。

我希望这是有用的信息。

答案 1 :(得分:0)

使用索引访问列表。

for root, dirs, files in os.walk(path):
    for file in files:    
        print(os.path.join(d, file))

        for i in xrange(0, len(files)):
            for files[i] in files:
                corpus = open(os.path.join(d, files[i]), 'rb')
                corpus = corpus.read()
                lne = []
                lines = corpus.split("\n")

                for i in xrange(0, len(lines) - 1):
                    line = re.sub(' +', ' ', lines[i])
                    line = line.upper()
                    lne.append(line.lstrip())
                    line2 = lines[i+1]

此处i0number of lines - 2之间的值。因此,在循环中,您可以访问:

line  = lines[i]
line2 = lines[i + 1]