2012-03-06 6 views
1

sys.argv를 사용하는 스크립트가 있고 입력에 특수 문자 (세미콜론)가 포함될 수 있습니다.sys argv의 Python 이스케이프 특수 문자

def myscript(text) 
    print text 


a = myscript(sys.argv[1]) 
print a 

를 내가 시도 :

>> python script.py "With these words she greeted Prince Vasili Kuragin, a man of high rank and importance, who was the first to arrive at her reception. Anna Pavlovna had had a cough for some days. She was, as she said, suffering" from la grippe; grippe being then a new word in St. Petersburg"" 

내가 얻을 :

'With these words she greeted Prince Vasili Kuragin, a man of high rank and importance, who was the first to arrive at her reception. Anna Pavlovna had had a cough for some days. She was, as she said, suffering' 
None 
bash: grippe: command not found 

I를 내가 가진

.. 난 그냥 문자열로 입력이 필요하지만, 세미콜론은 모든 것을 망쳐 놨어요 그 안에 무엇이 들어 있는지에 관계없이 전체 문자열을 스크립트로 가져오고 싶습니다.

내가 시도 :

는 파이썬의 문제가 아니다
a = myscript(repr(sys.argv[1])) 
a = myscript(str(sys.argv[1])) 

답변

7

, 당신은 호출 쉘에서 탈출해야합니다. 따옴표는 \"이고, 세미콜론은 \;입니다.

$ python testme.py "With these words she greeted Prince Vasili Kuragin, a man of high rank and importance, who was the first to arrive at her reception. Anna Pavlovna had had a cough for some days. She was, as she said, suffering\" from la grippe; grippe being then a new word in St. Petersburg\"" 

With these words she greeted Prince Vasili Kuragin, a man of high rank and importance, who was the first to arrive at her reception. Anna Pavlovna had had a cough for some days. She was, as she said, suffering" from la grippe; grippe being then a new word in St. Petersburg" 
+0

입력은 사용자가 입력하며 항상 다릅니다. 아니면 뭔가 이해가 안될까 ..? – Stpn

+0

견적 안에 세미콜론은 괜찮습니다. 첫 번째 인용문이 arg를 닫고 세미콜론이 쉘로 하여금 명령을 실행하게 만든 것입니다. 어떻게 사용자 입력을 얻고 있습니까? –

+0

잘 웹 사이트에서 보내지고 ... 나는 정규식을 통해 웹 측면에서 모든 것을 필터링 할 수있을 것 같아요하지만 할 간단한 방법이 있는지 궁금 해서요. – Stpn

2

이, 그것은 bash는 문제 파이썬 문제입니다하지 않습니다. Bash는 ; (세미콜론)이 새로운 bash 명령을 분리한다고 생각합니다. 당신은 그것을 벗어날 필요가 있습니다.

+0

알겠습니다, 고마워요! 그렇다면 배쉬 사이드에서 탈출 할 수있는 방법이 있습니까? – Stpn