在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',%" "%
谢谢高级。
答案 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)
希望这是你想要的。