2011-01-24 154 views
6

我有点粗糙的时间展示了如何计算使用Python的文本文件中的某些元素。我进入Python几个月,我熟悉以下功能;使用Python计算文本文件中的行数,单词和字符

  • 的raw_input
  • 开放
  • 分裂
  • LEN
  • 打印
  • rsplit()

这里是我到目前为止的代码:

fname = "feed.txt" 
fname = open('feed.txt', 'r') 

num_lines = 0 
num_words = 0 
num_chars = 0 

for line in feed: 
    lines = line.split('\n') 

此时我不确定接下来要做什么。我觉得最合理的方法是先计算行数,计算每行内的单词数量,然后计算每个单词内的字符数。但我遇到的其中一个问题是试图一次性执行所有必要的功能,而不必重新打开文件来分别执行每个功能。

+0

我想你的意思是'feed = open(...)`。另外,有没有理由不使用[wc](http://unixhelp.ed.ac.uk/CGI/man-cgi?wc)? – 2011-01-24 15:49:34

+0

你说得对。我会更多地阅读使用'wc',谢谢你的链接。 – 2011-01-24 16:36:10

回答

20

试试这个:

fname = "feed.txt" 

num_lines = 0 
num_words = 0 
num_chars = 0 

with open(fname, 'r') as f: 
    for line in f: 
     words = line.split() 

     num_lines += 1 
     num_words += len(words) 
     num_chars += len(line) 

返回代码:

fname = "feed.txt" 
fname = open('feed.txt', 'r') 

什么的这点? fname是一个字符串,然后是一个文件对象。你并没有真正使用第一行定义的字符串,你应该只使用一个变量:一个字符串或一个文件对象。

for line in feed: 
    lines = line.split('\n') 

line是文件中的一行。它对split('\n')没有意义。

+1

欣赏故障。我认为我需要添加'\ n'来分解每一行,但似乎line.split()完成了我的目标。 – 2011-01-24 16:37:34

3

功能可能会有所帮助:

  • open("file").read()读取整个文件的内容一次
  • 'string'.splitlines()分开彼此线(并丢弃空行)

通过使用len()和那些函数你可以完成你正在做的事情。

2
fname = "feed.txt" 
feed = open(fname, 'r') 

num_lines = len(feed.splitlines()) 
num_words = 0 
num_chars = 0 

for line in lines: 
    num_words += len(line.split()) 
1

一个我喜欢的方式是这样的一个,但可能是很好的小文件

with open(fileName,'r') as content_file: 
    content = content_file.read() 
    lineCount = len(re.split("\n",content)) 
    words = re.split("\W+",content.lower()) 

计算字数,有两路,如果你不关心重复,你可以只是做

words_count = len(words) 

如果你想每个单词的计数你可以做

import collections 
words_count = collections.Counter(words) #Count the occurrence of each word 
相关问题