您的Windows編輯器替換爲破折號正規劃線,並用「花哨」的風格引述報價:
>>> '\xe2\x80\x94-test'.decode('utf8')
u'\u2014-test'
>>> print '\xe2\x80\x94-test'.decode('utf8')
—-test
>>> '\xe2\x80\x9cTest\xe2\x80\x9d'.decode('utf8')
u'\u201cTest\u201d'
>>> print '\xe2\x80\x9cTest\xe2\x80\x9d'.decode('utf8')
「Test」
>>> import unicodedata
>>> for u in u'\u2014\u201c\u201d':
... print u, unicodedata.name(u)
...
— EM DASH
「 LEFT DOUBLE QUOTATION MARK
」 RIGHT DOUBLE QUOTATION MARK
下一次使用一個面向文本的編輯;文字處理器可能會用「漂亮」的版本替換文本。
你可以做unicode.translate()
電話:
>>> import sys
>>> sys.argv = ['test.py', '\xe2\x80\x94-test', '\xe2\x80\x9cTest\xe2\x80\x9d']
>>> map = {0x2014: u'-', 0x201c: u"'", 0x201d: u"'"}
>>> sys.argv[1:] = [s.decode('utf8').translate(map).encode('utf8') for s in sys.argv[1:]]
>>> sys.argv
['test.py', '--test', "'Test'"]
注意,外殼不會空白正確解析,因爲它沒有正規報價與合作;您可能需要使用上述方法第一個翻譯文本文件,然後將正確引用的字符串粘貼到shell中。
它真的是一個文本文件,還是像Word文檔? – user2357112
它可能在Windows上的Notepad ++或OS X上的TextWrangler中。但它可能已複製到臨時新文件中/作爲未保存的新文件,因此沒有適當的格式設置。 – jensph