0

我有 10 个文件,其中包含 100 个名为 randomnumbers(1-10).py 的随机数。我想创建一个程序,当找到一个字符串 123 时说“恭喜”,并计算 123 出现的次数。我有“祝贺”部分,我已经为计数部分编写了代码,但结果总是为零。怎么了?

for j in range(0,10):
n = './randomnumbers' + str(j) + '.py'          
s='congradulations' 
z='123' 
def replacemachine(n, z, s):
    file = open(n, 'r')             
    text=file.read()    
    file.close()    
    file = open(n, 'w') 
    file.write(text.replace(z, s))
    file.close()
    print "complete"
replacemachine(n, z, s) 
count = 0
if 'z' in n:
    count = count + 1
else:
    pass
print count
4

2 回答 2

0

考虑:

some_file_as_string = """\
184312345294839485949182
57485348595848512493958123
5948395849258574827384123
8594857241239584958312"""

num_found = some_file_as_string.count('123')
if num_found > 0:
    print('num found: {}'.format(num_found))
else:
    print('no matches found')

'123' in some_file_as_string一个有点浪费,因为它仍然需要查看整个字符串。无论如何,您最好计数并在计数返回大于 0 时执行某些操作。

你也有这个

if 'z' in n:
    count = count + 1
else:
    pass
print count

这是询问字符串'z'是否存在,您应该检查z变量(不带引号)

于 2012-09-29T21:08:43.120 回答
0

if 'z' in n正在测试文字字符串'z'是否在文件名 n中。由于您仅在 内打开文件replacemachine,因此无法从外部访问文件内容。

最好的解决方案是从内部计算出现次数replacemachine

def replacemachine(n, z, s):
    file = open(n, 'r')
    text=file.read()
    file.close()
    if '123' in text:
        print 'number of 123:', text.count('123')
    file = open(n, 'w')
    file.write(text.replace(z, s))
    file.close()
    print "complete"

然后你就不需要那个代码了replacemachine(n, z, s)

于 2012-09-29T18:13:28.027 回答