Управляющая строка Python - PullRequest
       5

Управляющая строка Python

1 голос
/ 28 октября 2011

У меня есть «сырая» переменная, которая хранит:

*rawVariable =* "Hello" "World"  "String 1"  "String 2"  "String 3"  "Sting 4"   
"Hello" "World"  "String 5"  "String 6"  "String 7"  "String 8"   
"Hello" "World" "String 9"  "String 10"  "String 11"  "String 12"

Возможно ли сохранить слово в массиве с двойными кавычками спереди и сзади в качестве разделителя?

Я не могу использовать " в качестве разделителя.

Пример:

formattedArray = ["Hello","World","String 1","String 2","String
3","Sting 4","Hello","World"  "String 5","String 6","String 7","String
8","Hello","World","String 9","String 10","String 11","String 12"]

Примечание:

  • Между словом есть различный интервал (включая \n).
  • Я буду хранить в 2D массив после formattedArray.

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Мне кажется, что вам просто нужно разделить строку с помощью делитера " и получить все остальные подстроки (поскольку интересные будут переплетаться с пробелами):

def split_quoted_strings(s):
    split_via_quote = s.split('"')
    return split_via_quote[1::2]

Тестирование дает правильные результаты:

>>> a='"Hello" "World" "String 1" "String 2" "String 3" "Sting 4" "Hello" "World" "String 5" "String 6" "String 7" "String 8" "Hello" "World" "String 9" "String 10" "String 11" "String 12"'
>>> split_quoted_string(a)
['Hello',
'World',
# omitted
'String 12']
1 голос
/ 28 октября 2011

Я не уверен на 100%, понимаю ли я ваш вопрос, но, полагаю, вам может помочь следующий код:

import re

def splitRawString(s):
    return map(lambda x: re.sub('^"?([^"]*)"?$', r'\1', x),
        re.split('"\s*"', s))

a='"Hello" "World" "String 1" "String 2" "String 3" "Sting 4" "Hello" "World" "String 5" "String 6" "String 7" "String 8" "Hello" "World" "String 9" "String 10" "String 11" "String 12"'
print splitRawString(a)

дает следующий вывод:

['Hello', 'World', 'String 1', 'String 2', 'String 3', 'Sting 4', 'Hello', 'World', 'String 5', 'String 6', 'String 7', 'String 8', 'Hello', 'World', 'String 9', 'String 10', 'String 11', 'String 12']

Это то, что тебе нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...