2015-04-24 4 views
-2

В sikuli Я получаю многострочную строку из буфера обмена, как это ...Как преобразовать многострочную строку в список строк?

Names = App.getClipboard(); 

Так Name =

#corazona 
#Pebleo00 
#cofriasd 
«paflio 

и я использовать это регулярное выражение, чтобы удалить первый символ, если он не является в x00-x7f диапазоне шестигранной или не слово, или это цифра

import re 
Names = re.sub(r"(?m)^([^\x00-\x7F]+|\W|\d)", "", Names) 

Так что теперь имена =

corazona 
Pebleo00 
cofriasd 
paflio 

Но у меня возникают проблемы со вторым регулярным выражением, которое преобразует «Имена» в элементы последовательности. Я хотел бы преобразовать «имена» в ...

'corazona', 'Pebleo00', 'cofriasd', 'paflio' 

или

'corazona', 'Pebleo00', 'cofriasd', 'paflio', 

Итак sikuli может распознать его как список (я обнаружил, что Sikuli способен распознать даже с эти последние «запятая» и «пространство», в конце концов), используя ...

NamesAsList = eval(Names) 

Как я мог бы сделать это в Python? необходимо ли использовать регулярное выражение, или есть другой способ сделать это в python?

Я уже сделал это, но используя .Net regex, я просто не знаю, как это сделать в python, я не искал его без результата. Это, как я сделал это с использованием .NET Regex

Text to find: 
(.*[^$])(\r\n|\z) 
Replace with: 
'$1',%" "% 

Благодаря продвинутым.

+0

Как насчет первой линии? –

+0

Где идет первая строка ожидаемого выхода? Почему в вашем ожидаемом выходе есть запятая? –

+0

Hi Avinash Raj, я отредактировал мой вопрос, чтобы ответить на ваши вопросы – litu16

ответ

0

Пару лайнеры. Ваш вопрос не совсем ясен, но я предполагаю, что вы хотите разделить заданную строку, разделенную «новой строкой», а затем сгенерировать список строк, удалив первый символ, если он не является буквенным числом. Вот как я бы это сделал

import re 
r = re.compile(r'^[a-zA-Z0-9]') # match @ beginning anything that's not alpha numeric 
s = '#abc\ndef\nghi' 
l = [r.sub('', x) for x in s.split()] 
# join this list with comma (if that's required else you got the list already) 
','.join(l) 

Надеюсь, это то, что вы хотите.

0

Если Names является string, прежде чем «конвертировать» это, в которой каждое имя отделяется новой строки («\ п»), то это будет работать:

NamesAsList = '\n'.split(Names)

См this question для другие варианты.

0

Вы можете использовать splitlines()

import re 

clipBoard = App.getClipboard(); 
Names = re.sub(r"(?m)^([^\x00-\x7F]+|\W|\d)", "", clipBoard) 
# Replace the end of a line with a comma. 
singleNames = ', '.join(Names.splitlines()) 
print(singleNames) 
Смежные вопросы