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