Tôi muốn phân tích một chuỗi như thế này:Python, làm thế nào để phân tích chuỗi để trông giống như sys.argv
-o 1 --long "Some long string"
vào đây:
["-o", "1", "--long", 'Some long string']
hoặc tương đương.
Điều này khác với getopt hoặc optparse, trong đó bắt đầu với đầu vào phân tích cú pháp sys.argv (như đầu ra tôi có ở trên). Có cách nào tiêu chuẩn để làm điều này không? Về cơ bản, đây là "tách" trong khi vẫn giữ các chuỗi được trích dẫn cùng nhau.
chức năng tốt nhất của tôi cho đến nay:
import csv
def split_quote(string,quotechar='"'):
'''
>>> split_quote('--blah "Some argument" here')
['--blah', 'Some argument', 'here']
>>> split_quote("--blah 'Some argument' here", quotechar="'")
['--blah', 'Some argument', 'here']
'''
s = csv.StringIO(string)
C = csv.reader(s, delimiter=" ",quotechar=quotechar)
return list(C)[0]
Sự quên lãng thực sự của riêng tôi được tiết lộ: http://stackoverflow.com/questions/92533, đã cho tôi sử dụng shlex.split. Rõ ràng là tôi đã quên mất nó. –
Nếu những gì bạn thực sự cần là "để xử lý các tùy chọn" và không chỉ "để phân tích chuỗi trên dòng lệnh", bạn có thể xem xét http://docs.python.org/2/library/argparse.html –