如何将多行字符串转换为行列表?

时间:2015-04-24 08:04:49

标签: python split sikuli

在sikuli中,我从剪贴板中获得了多行字符串......

Names = App.getClipboard();

所以姓名=

#corazona
#Pebleo00
#cofriasd
«paflio

我已经使用这个正则表达式来删除第一个字符,如果它不在x00-x7f十六进制范围内或者不是一个单词,或者是一个数字

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

所以现在Names =

corazona
Pebleo00
cofriasd
paflio

但是,我遇到了第二个转换" Names"进入序列的项目。我想转换" Names"到...

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

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

因此,sikuli可以将其识别为一个列表(我发现Sikuli能够识别它,即使最后一个"逗号"和#34;空间"最终)通过使用...

NamesAsList = eval(Names)

我怎么能在python中这样做?是否有必要使用正则表达式,或者在python中有其他方法可以做到这一点?

我已经完成了这个但是使用.Net正则表达式,我只是不知道如何在python中做到这一点,我用google搜索它没有结果。 这就是我使用.Net regex

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

谢谢高级。

3 个答案:

答案 0 :(得分:0)

如果Names之前是string,那么转换"它,其中每个名称由一个新行分隔(' \ n'),然后这将起作用:

NamesAsList = '\n'.split(Names)

有关其他选项,请参阅this question

答案 1 :(得分: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)

答案 2 :(得分: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)

希望这是你想要的。