我想要执行的最终代码是在名为' names.txt'的文本文档中读取一串名称。然后告诉程序计算该文件中有多少名称并显示名称的数量。我到目前为止的代码是为了显示文本文件中数字的总和,但它足够接近我现在需要的程序,我想我可以重新编写它来收集字符串/名称的数量和显示而不是总和。
以下是目前的代码:
def main():
#initialize an accumulator.
total = 0.0
try:
# Open the file.
myfile = open('names.txt', 'r')
# Read and display the file's contents.
for line in myfile:
amount = float(line)
total += amount
# Close the file.
myfile.close()
except IOError:
print('An error occured trying to read the file.')
except ValueError:
print('Non-numeric data found in the file.')
except:
print('An error occured.')
# Call the main function.
main()
我仍然是Python编程的新手,所以请不要对我太苛刻。如果有人可以弄清楚如何重做这个来显示数字/名称的数量而不是数字的总和。我将不胜感激。如果这个程序无法重新编写,我很乐意接受新的解决方案。
编辑:这是' names.txt'的一个例子。看起来像是:
约翰
玛丽
保
安
答案 0 :(得分:0)
fh = open("file","r")
print "%d lines"%len(fh.readlines())
fh.close()
或者你可以做到
fh=open("file","r")
print "%d words"%len(fh.read().split())
fh.close()
所有这些都是随时可用的信息,如果你付出一些努力就不难发现......只是得到答案通常会导致不及格的课程......
答案 1 :(得分:0)
考虑文本文件中的名称由行分隔。
myfile = open('names.txt', 'r')
lstLines = myfile.read().split('\n')
dict((name,lstLines.count(name)) for name in lstLines)
这将创建一个包含其出现次数的每个名称的字典。
在列表
中搜索特定名称的出现,例如“name1”lstLines.count('name1')
答案 2 :(得分:0)
假设使用空格分割名称:
def main():
#initialize an accumulator.
total = 0.0
try:
# Open the file.
myfile = open('names.txt', 'r')
# Read and display the file's contents.
for line in myfile:
words = line.split()
total += len(words)
# Close the file.
myfile.close()
except IOError:
print('An error occured trying to read the file.')
except ValueError:
print('Non-numeric data found in the file.')
except:
print('An error occured.')
# Call the main function.
main()
答案 3 :(得分:0)
如果您只想计算文件中的行
# Open the file.
myfile = open('names.txt', 'r')
#Count the lines in the file
totalLines = len(myfile.readlines()):
# Close the file.
myfile.close()
答案 4 :(得分:-1)
使用with
语句打开文件。即使发生异常,它也会正确关闭文件。您可以省略文件模式,它是默认的。
如果每个名称都在其自己的行上并且没有重复项:
with open('names.txt') as f:
number_of_nonblank_lines = sum(1 for line in f if line.strip())
name_count = number_of_nonblank_lines
任务很简单。从新代码开始,以避免为问题代码累积未使用/无效。
如果您只需要计算文件中的行数(例如wc -l
命令),那么您可以使用.count('\n')
方法:
#!/usr/bin/env python
import sys
from functools import partial
read_chunk = partial(sys.stdin.read, 1 << 15) # or any text file instead of stdin
print(sum(chunk.count('\n') for chunk in iter(read_chunk, '')))
另见Why is reading lines from stdin much slower in C++ than Python?