Наша Система поиска исходного кода SD (SCSE) может предоставить этот результат напрямую.
SCSE предоставляет возможность чрезвычайно быстрого поиска в больших наборах файлов с использованием некоторой языковой структуры для обеспечения точных запросов и минимизации ложных срабатываний. Он обрабатывает широкий спектр
языков, даже в то же время, в том числе Python. Графический интерфейс пользователя отображает результаты поиска и страницу с текущим текстом из файла, содержащего выбранный результат.
Он использует лексическую информацию из исходных языков в качестве основы для запросов, состоящих из различных ключевых слов языка и токенов шаблонов, которые соответствуют различным элементам языка содержимого. SCSE знает типы лексем, доступных в языке. Можно искать общий идентификатор (используя токен запроса I) или идентификатор, соответствующий какому-либо выражению regulatr. Аналогично, on может искать общую строку (используя токен запроса «S» для «любого вида строкового литерала») или для конкретного
тип строки (для Python, включая «UnicodeStrings», не-Unicode-строки и т. д., которые в совокупности составляют набор элементов Python, содержащих «S»).
Итак, поиск:
'for' ... I=ij*
находит ключевое слово 'for' возле ("...") идентификатора, префикс которого равен "ij", и показывает все попадания. (Пробелы, зависящие от языка, включая разрывы строк и комментарии, игнорируются.
Тривиальный поиск:
S
находит все строковые литералы. Это часто довольно большой набор: -}
Поиск
UnicodeStrings
находит все строковые литералы, которые лексически определены как строки Unicode (u "...")
Все, что вы хотите, это строки, которые не являются UnicodeStrings. SCSE предоставляет оператор вычитания, который вычитает попадания одного вида, которые перекрывают попадания другого. Итак, ваш вопрос, «какие строки не являются юникодом», выражается кратко:
S-UnicodeStrings
Все показанные хиты будут строками, которые не являются строками Unicode, ваш точный вопрос.
SCSE предоставляет средства ведения журналов, чтобы вы могли записывать попадания. Вы можете запустить SCSE из командной строки, включив запрос на ответ по сценарию. Если поместить это в командный скрипт, инструмент даст ваш ответ напрямую.