문제는 여러 줄 인용 문자열을 가진 것은 당신이 생각하는 일을하지 않는다는 것입니다. 여러 줄 인용 된 문자열은 문자 그대로입니다 - 내 줄 바꿈이있는 문자열 :
import pyparsing as pp
src0 = '''
"Hello
World
Goodbye and go"
'''
pat = pp.QuotedString('"', multiline=True)
print pat.parseString(src0)
이 문자열을 구문 분석의 출력은 ['Hello\n World\n Goodbye and go']
될 것입니다.
파이썬의 문자열이 어떻게 행동하는지에 비슷한 문자열을 원하는 경우 내가 아는 한, 당신은 그것을 자신을 정의 :
import pyparsing as pp
src1 = '''
Test("This is a long string")
'''
src2 = '''
Test("This is a long"
"string")
'''
src3 = '''
Test("This is a long" \\
"string")
'''
_lp = pp.Suppress('(')
_rp = pp.Suppress(')')
_str = pp.QuotedString('"')
_slash = pp.Suppress(pp.Optional("\\"))
_multiline_str = pp.Combine(pp.OneOrMore(_str + _slash), adjacent=False)
func = pp.Word(pp.alphas)
function = func + _lp + _multiline_str + _rp
print src1
print function.parseString(src1)
print '-------------------------'
print src2
print function.parseString(src2)
print '-------------------------'
print src3
print function.parseString(src3)
를이 다음과 같은 출력이 생성
Test("This is a long string")
['Test', 'This is a long string']
-------------------------
Test("This is a long"
"string")
['Test', 'This is a longstring']
-------------------------
Test("This is a long" \
"string")
['Test', 'This is a longstring']
을 참고 : Combine
클래스는 다양한 인용 문자열을 단일 단위로 병합하므로 출력 목록에 단일 문자열로 나타납니다. 백 슬래시가 출력 문자열의 일부로 결합되지 않도록 억제 된 이유입니다.
감사합니다. 이것은 내가 바라는 바를 수행합니다! –