python 파싱 예제

By | August 2, 2019

나는 1 년 동안 텍스트 파일을 구문 분석해 왔으며 시간이 지남에 따라 내 방법을 완성했습니다. 그럼에도 불구하고 더 나은 해결책이 있는지 확인하기 위해 몇 가지 추가 연구를했습니다. 사실, 내 코드를 최적화에 저를 조언 다양한 지역 사회 구성원에게 빚. 커뮤니티는 또한 텍스트 파일을 구문 분석하는 몇 가지 다른 방법을 제공했습니다. 그들 중 일부는 영리하고 흥미 진진했다. 제가 가장 좋아하는 것은 이 것이었습니다. 나는 아래포럼에서 내 샘플 문제와 해결책을 제시했다 : 일반적으로 정규표현이 충분하지 않을 때 라이브러리와 도구를 구문 분석합니다. 그러나 정규식의 수명과 유용성을 연장하거나 유사한 복잡성의 요소를 사용하는 것보다 Python에 적합한 라이브러리가 있습니다. PyPEG는 텍스트를 구문 분석하고 구성하는 프레임워크입니다. 즉, PEG만큼 강력한 구문에서 문법을 정의하지만 파이썬 코드에서는 문법을 정의합니다. 그런 다음 이 문법을 사용하여 해당 문법을 기반으로 구문 분석 및/또는 텍스트를 작성합니다. 텍스트를 작성하는 경우 분명히 데이터를 직접 제공해야 합니다. 이 경우 템플릿 시스템으로 작동합니다.

PEG 표기술또는 파이썬으로 정의된 아르페지오 문법은 일반적으로 매우 읽을 수 있습니다. 다음 예제에서는 파이썬 표기이가 사용됩니다. JSON (“자바 스크립트 개체 표기”를 의미)는 다양한 응용 프로그램 간의 데이터 교환을 용이하게하는 텍스트 기반 형식입니다. 예를 들어 Windows Visual C++ 런타임 오류를 해결하는 방법 C++로 작성된 응용 프로그램은 Windows Visual C++ 런타임 오류 Visual C++ 오류를 해결하는 방법은 Windows 사용자에게 일반적인 문제입니다. 그러나 당신은 그들을 해결하는 방법을 알고 계십니까? Windows에서 실행되는 더 읽기는 쉽게 파이썬으로 작성하고 리눅스에서 실행되는 응용 프로그램과 JSON 데이터를 교환 할 수 있습니다. 단순성과 유연성으로 인해 최근 몇 년 동안, 특히 이전 XML 기반 형식을 선호하는 경우가 광범위하게 사용되었습니다. 여기서는 전달된 xmlfile을 구문 분석하여 ElementTree 개체를 만듭니다. 실용적인 성능을 테스트하기 위해 파이썬 FAQ에서 456 자 긴 파이썬 표현식 (약 300 토큰)을 골라 여러 가지 도구로 구문 분석했습니다. 다음은 Python 2.5에서 몇 가지 일반적인 결과입니다:이 함수는 ast에서 호출자로부터 ST 개체를 수락하고 동등한 구문 분석 트리를 나타내는 파이썬 목록을 반환합니다.

결과 목록 표현은 목록 형태로 새 구문 분석 트리를 검사하거나 만드는 데 사용할 수 있습니다. 이 함수는 목록 표현을 빌드하는 데 메모리를 사용할 수 있는 한 실패하지 않습니다. 구문 분석 트리가 검사에만 사용되는 경우 st2tuple()를 대신 사용하여 메모리 소비와 조각화를 줄여야 합니다. 목록 표현이 필요한 경우 이 함수는 튜플 표현을 검색하고 중첩된 목록으로 변환하는 것보다 훨씬 빠릅니다. 미리 계산된 토큰 목록에서 작업하도록 파서를 조정하면 (“list(tokenize_python(프로그램)”)를 실행하여 얻은 경우 구문 분석 시간은 0.9 ms 미만으로 떨어지며, 즉 전체 구문 분석의 시간은 토큰 인스턴스 생성에 소요되는 시간의 약 4분의 1에 불과합니다. , 구문 분석 및 트리 건물. 나머지는 거의 전적으로 파이썬의 토큰화 모듈에 사용됩니다. 빠른 토큰화기를 사용하면이 알고리즘은 Python의 내장 된 토큰 화 / 파서에서 2 배 정도 이내를 얻을 수 있습니다. 이 문제를 해결하는 한 가지 방법은 토큰 화기를 조정하는 것입니다 (예 : 원시 파이썬 파서와 토큰 인스턴스 팩터 사이에 결합 필터를 삽입하여)하지만 “is”및 “not”연산자에 대한 사용자 지정 “led”메서드로이 문제를 해결하는 것이 더 쉽습니다.

ot는 언어 정의에 따라 다릅니다 (파이썬은 숫자가 아닌 것에 대해 unary plus를 사용하는 경우 일반적인 경우 최적화하지 않습니다.) Pyleri에 대한 문법은 클래스의 일부인 Python 식에 정의되어야 합니다. 이 정의되면, 문법은 파이썬 또는 다른 지원되는 언어의 문법을 정의하는 파일로 내보낼 수 있습니다. 예를 들어 파이썬에서 문법을 정의하고 JacaScript로 내보낸 다음 자바스크립트 버전의 pyleri를 사용하여 실행할 수 있습니다.

Category: Uncategorized