Поиск файла данных: кодирование на python vs c ++ - PullRequest
0 голосов
/ 27 мая 2011

Во-первых, это не домашнее задание !!!: p То, что я хочу сделать, это:

Учитывая файл данных (будь то текст или цифры), сохраненный на рабочем столе, т. е. я хочу иметь возможность искать этот файл и извлекать только те данные, которые я хочуи распечатать его на экран.Возможно, я захочу сделать что-то другое, но я не знаю, какие есть варианты.

Кроме того, было бы более подходящим python или c ++.Я не очень хорошо разбираюсь в python, и прошло уже много лет с тех пор, как я начал использовать c ++, но я слышал, что python более эффективен, и хотя эффективность этой программы может быть, а может и не быть большой, я слышал, что python гораздо прощепонять.

Примеры, код, шаблоны (<- было бы здорово) </p>

Спасибо всем!

Ответы [ 3 ]

3 голосов
/ 27 мая 2011

На этот вопрос немного сложно ответить, не зная, как вы хотите указать нужные данные.

Если вы можете указать необходимые данные с помощью регулярных выражений, Python, вероятно, будет примерно таким же эффективным и немного быстрееписать - но вы, возможно, сможете сделать работу с чем-то вроде grep еще проще.

Если потребуется гораздо больше обработки, чтобы выяснить, какие данные отображать, Python может начинает становиться немного медленнее - это может быть довольно быстро, если часть Python является в основном довольно «тонкой» оболочкой, а большая часть тяжелой работы выполняется различными библиотеками.Это может стать немного медленнее, если вы выполняете серьезную / значительную обработку в самом Python.

Если вы пишете в C ++, вы получите более или менее противоположную ситуацию - до тех пор, пока вы ' разумно осторожно, вполне вероятно, что производительность не будет проблемой.Реальный вопрос будет в том, сколько работы потребуется, чтобы произвести то, что вы хотите.Не зная ничего о том, какие данные вы ищете, как вы хотите их отобразить и т. Д., Об этом почти невозможно догадаться.

редактирование на основе комментария: шаблон типа Data = #### звучит какв значительной степени классический случай для регулярного выражения, для которого grep будет работать просто отлично.

Это также то, что Python, вероятно, может делать отлично, но если вы решили сделать свое собственное в C ++, он мог бы выглядетьпримерно так:

#include <iostream>
#include <string>
#include <regex>
#include <fstream>

int main(int argc, char **argv) { 
    if (argc < 2) {
        std::cerr << "Usage: searched <filename>\n";
        return 1;
    }

    std::ifstream in(argv[1]);
    std::string line;
    std::regex pat("Data = [0-9]+");

    while (std::getline(line, in))
        if (std::regex_search(line, pat))
            std::cout << line << "\n";
    return 0;
}

Предполагается, что вы ищете шаблон Data = #, происходящий где-то в строке.Если вы хотите считать это совпадением только в том случае, если это строка целом , замените regex_search на regex_match.

Другое предположение состоит в том, что вы используете относительно недавнююкомпилятор, который включает в себя стандартные классы регулярных выражений.Так обстоит дело с VS 2010 и gcc 4.6 (если я правильно помню), но некоторые старые компиляторы могут вместо этого назвать его std::tr1::regex, а некоторые более старые все еще не будут иметь его вообще.

1 голос
/ 27 мая 2011

C ++ будет быстрее (возможно, если вы хорошо это напишите), но это будет сложнее, но легче начать, так как вы это знаете.

Python потребуется некоторое время, чтобы привыкнуть, и он, вероятно, будет работать немного медленнее, но будет легче (как только вы выучите язык).

Это очень простая проблема, решаемая много раз, поэтому выбор языка, который вы выбираете, не имеет значения.

Если вам нравится графический интерфейс, посмотрите библиотеки GUI.

0 голосов
/ 27 мая 2011

Python будет намного лучше для этой задачи:

for line in file("path/to/file.txt", "rb"):
    print line

Эквивалент C ++ гораздо сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...