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

2024-10-01 11:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在西库里,我从剪贴板上得到了一个多行字符串。。。在

Names = App.getClipboard();

销售订单名称=

^{pr2}$

我用这个正则表达式删除第一个字符,如果它不在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', 

所以西库里可以把它识别成一个列表(我发现西库里甚至可以用最后的“逗号”和“空格”来识别它),方法是使用。。。在

NamesAsList = eval(Names)

我怎么能用python做到这一点呢?是否有必要使用regex,或者在python中有其他方法可以做到这一点?在

我已经做过了,但是使用.Net正则表达式,我只是不知道如何用python来做,我在谷歌上搜索了一下,没有结果。 这就是我用.Net正则表达式做的

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

谢谢你了。在


Tags: 方法字符串订单re名称appnetnames
3条回答

如果Names在“转换”它之前是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)

希望这就是你想要的。在

相关问题 更多 >