Поиск, подсчет и добавление - Python - PullRequest
0 голосов
/ 24 марта 2012
properties = ["color", "font-size", "font-family", "width", "height"]


inPath = "style.css"
outPath = "output.txt"

#Open a file for reading
file = open(inPath, 'rU')
if file:
    # read from the file
    filecontents = file.read()
    file.close()
else:
    print "Error Opening File."

#Open a file for writing
file = open(outPath, 'wb')
if file:
    for i in properties:
        search = i
        index = filecontents.find(search)   
        file.write(str(index), "\n")
    file.close()
else:
    print "Error Opening File."

, кажется, работает, но:

  • Он выполняет поиск по ключевому слову только один раз?
  • Не записывается в выходной файл.function takes exactly 1 argument
  • Я не хочу, чтобы он действительно печатал индекс, но сколько раз появляется ключевое слово.

Большое спасибо

Ответы [ 2 ]

5 голосов
/ 24 марта 2012

Во-первых, вы хотите .count(search), а не .find(search), если вы ищете # случаев.

Во-вторых, .write() принимает только один параметр - если вы хотите написать новую строку, вам нужно сначала объединить его или дважды вызвать .write().

В-третьих, выполнение for i in properties: search = i является излишним; просто используйте нужное имя в цикле for.

for search in properties:
    cnt = filecontents.count(search)
    file.write(str(cnt) + "\n")
0 голосов
/ 24 марта 2012
from itertools import imap
properties = ("color", "font-size", "font-family", "width", "height")


inPath = "style.css"
outPath = "output.txt"

try:
    #Open a file for reading
    filecontents = file(inPath).read()
except Exception as exc:
    print exc
else:
    #Open a file for writing
    with open(outPath, 'wb') as out_file:
        #for property in properties:
        #    out_string = "%s %s\n"   
        #    out_file.write( out_string % (
        #                      property, filecontents.count(property)))
        outfile.write('\n'.join(
                      imap(str, imap(filecontents.count, properties))))
...