Python shlex.split (), игнорировать одинарные кавычки - PullRequest
10 голосов
/ 29 июля 2011

Как в Python я могу использовать shlex.split() или подобное для разделения строк, сохраняя только двойные кавычки? Например, если входное значение равно "hello, world" is what 'i say', то выходное значение будет равно ["hello, world", "is", "what", "'i", "say'"].

Ответы [ 2 ]

16 голосов
/ 29 июля 2011
import shlex

def newSplit(value):
    lex = shlex.shlex(value)
    lex.quotes = '"'
    lex.whitespace_split = True
    lex.commenters = ''
    return list(lex)

print newSplit('''This string has "some double quotes" and 'some single quotes'.''')
8 голосов
/ 29 июля 2011

Вы можете использовать shlex.quotes для управления тем, какие символы будут считаться строковыми кавычками.Вам также нужно изменить shlex.wordchars, чтобы сохранить ' с i и say.

import shlex

input = '"hello, world" is what \'i say\''
lexer = shlex.shlex(input)
lexer.quotes = '"'
lexer.wordchars += '\''

output = list(lexer)
# ['"hello, world"', 'is', 'what', "'i", "say'"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...