На этот вопрос немного сложно ответить, не зная, как вы хотите указать нужные данные.
Если вы можете указать необходимые данные с помощью регулярных выражений, 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
, а некоторые более старые все еще не будут иметь его вообще.