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

How to convert a multiline string into a list of lines?

在 sikuli 中,我从剪贴板中得到了这样的多行字符串...

Names = App.getClipboard();

名字=

#corazona
#Pebleo00
#cofriasd
«paflio

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

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

所以现在名字 =

corazona
Pebleo00
cofriasd
paflio

但是,我在使用将 "Names" 转换为序列项的第二个正则表达式时遇到了问题。我想将 "Names" 转换成...

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

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

所以 sikuli 可以将它识别为一个列表(我发现 Sikuli 能够识别它,即使是最后的 "comma" 和 "space")通过使用...

NamesAsList = eval(Names)

我如何在 python 中执行此操作?是否有必要使用正则表达式,或者在 python?

中还有其他方法可以做到这一点

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

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

感谢高级。

如果 Names 是 "convert" 之前的 string,其中每个名称由换行符 ('\n') 分隔,那么这将起作用:

NamesAsList = '\n'.split(Names)

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

你可以使用 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)

一对一衬垫。您的问题并不完全清楚 - 但我假设 - 您想要拆分由 'newline' 分隔的给定字符串,然后通过删除第一个字符(如果不是字母数字)来生成字符串列表。这是我的处理方式

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)

希望这就是你想要的。