2016-01-23 72 views
0

我最近开始使用Python,我正在尝试一些东西。我知道Python中的一些基本指令,以及它们的工作原理。但大部分时间我都不知道这些说明的例外和小细节。在处理文本文件(Python)时for循环的功能

我想制作一个数组,并将文本文件放入该数组中。我使用这段代码: document = [] with open('inputfile.txt') as f: for line in f: document.append(line.strip().split(' ')) print(document)

这样做是将输入文件放在变量“f”中,然后对于“f”中的“line”将该行作为单独的数组添加。我知道“.strip()”摆脱了“\ n”,“.split('')”用单独的单词将句子分开。我的问题是:

1.)为什么python知道“行”变量表示一个新行?换句话说:为什么它会为每条线“做点什么”,而不是例如。为每个单词?它适用于任何单词,所以它不是那种特殊的语法。

2.)我可以改变这个东西吗?

3.)为什么每行都添加为一个新的数组(从而创建一个2D数组)?为什么不是所有的处理文本都塞进一个数组? (我知道这样更好,但这不是重点,关键是:为什么?)

回答

0

1)它知道这是一个新行,因为你的文本文件(通常)在其中有新的行字符每一行的末尾(不可见的,除非你设置你的编辑器来显示所有隐藏字符(S))

2)有几个不同的方式做同样的事情

3)分裂()返回一个列表,所以每一行将是一个单词列表,你的'文档'将是列表的列表。

+0

3上的答案是一个很好的答案,谢谢你。 2并不是那么有帮助,但至少我知道现在有可能。我会搜寻自己。和问题一:我知道我的文本文件中有字符我看不到,但我想知道为什么for循环选择'\ n'来循环,而不是像空间的东西。 –

+0

我在1)误解了你的问题。当你用来循环文件对象时,Python的行为就是这样。 2)我的意思是,你这样做的方式很好。还有其他的方法,但我没有看到你在这个具体的例子中改变任何理由 – nge

+0

在这个线程中接受的答案应该有所帮助:http://stackoverflow.com/questions/16922214/reading-a-text-file-和分离-IT-成单的话,在-蟒蛇 – nge