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'之后得到一行。
答案 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]
此处i
是0
和number of lines - 2
之间的值。因此,在循环中,您可以访问:
line = lines[i]
line2 = lines[i + 1]