计算文件中的字符| python 3x

时间:2014-03-02 02:32:19

标签: python counting chars

我想知道,我怎么能算上所有“s”字符并在我导入的文本文件中打印它们的号码?我自己尝试过几次,但我还是做错了。如果有人能给我一些提示,我会非常感激:)

4 个答案:

答案 0 :(得分:1)

打开文件,"r"表示它以只读模式打开。

filetoread = open("./filename.txt", "r")

使用此循环,您将遍历文件中的所有行并计算字符 chartosearch 出现的次数。最后,打印出值。

total = 0
chartosearch = 's'
for line in filetoread:
    total += line.count(chartosearch)
print("Number of " + chartosearch + ": " + total)

答案 1 :(得分:0)

我假设您要读取文件,找到s的数量,然后将结果存储在文件的末尾。

f = open('blah.txt','r+a')
data_to_read = f.read().strip()
total_s = sum(map(lambda x: x=='s', data_to_read ))
f.write(str(total_s))
f.close()

我在功能上做了它只是为了给你另一个视角。

答案 2 :(得分:0)

您使用open("myscript.txt", "r")打开文件,模式为"r",因为您正在阅读。要删除空格和\n,我们会执行.read().split()。然后,使用for循环,我们遍历每个单独的字符并检查它是'S'还是's',每次我们找到一个,我们都会向{scount添加一个字符。 1}}变量(scount应该表示S计数。)

filetoread = open("foo.txt").read().split()
scount = 0
for k in ''.join(filetoread):
    if k.lower() == 's':
        scount+=1

print ("There are %d 's' characters" %(scount))

答案 3 :(得分:0)

这是一个具有合理时间性能的版本(在我的机器上约为500MB / s)ascii字母:

#!/usr/bin/env python3
import sys
from functools import partial

byte = sys.argv[1].encode('ascii') # s
print(sum(chunk.count(byte)
          for chunk in iter(partial(sys.stdin.buffer.read, 1<<14), b'')))

示例:

$ echo baobab | ./count-byte b
3

可以轻松更改以支持任意Unicode代码点:

#!/usr/bin/env python3
import sys
from functools import partial

char = sys.argv[1]
print(sum(chunk.count(char)
          for chunk in iter(partial(sys.stdin.read, 1<<14), '')))

示例:

$ echo ⛄⛇⛄⛇⛄ | ./count-char ⛄
3

要将其与文件一起使用,您可以使用重定向:

$ ./count-char < input_file