由逗号或分号分隔成Python lis的值字符串

2024-05-16 17:57:23 发布

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

我正在从配置文件中读取电子邮件地址列表。地址可以用逗号或分号分隔-例如

billg@microsoft.com,steve@apple.com, dhh@37signals.com
billg@microsoft.com;steve@apple.com;  dhh@37signals.com

我也想去掉电子邮件地址周围的空白。

我需要把它们放到一个Python列表中,如下所示:

['billg@microsoft.com', 'steve@apple.com', 'dhh@37signals.com']

什么是最Python式的方法?谢谢。


Tags: 方法comapple列表电子邮件地址配置文件空白
3条回答

正则表达式很强大,可能是这里的方法;但是对于像这样简单的东西,字符串方法也可以。这里有一个简洁的解决方案:

[s.strip() for s in s1.replace(',', ';').split(';')]

测试输出:

>>> s1 = "billg@microsoft.com,steve@apple.com, dhh@37signals.com"
>>> s2 = "  billg@microsoft.com;steve@apple.com;  dhh@37signals.com  "
>>> print [s.strip() for s in s1.replace(',', ';').split(';')]
['billg@microsoft.com', 'steve@apple.com', 'dhh@37signals.com']
>>> print [s.strip() for s in s2.replace(',', ';').split(';')]
['billg@microsoft.com', 'steve@apple.com', 'dhh@37signals.com']

在这种情况下,我将使用re模块

>>> import re
>>> 
>>> data = "billg@microsoft.com;steve@apple.com;  dhh@37signals.com"
>>> stuff = re.split(r"\s*[,;]\s*", data.strip())

如果只有“;”或“,”并且您知道是哪一个,请使用string.split:

>>> 'adjifjdasf;jdiafjodafs;jdiajof'.split(';')
['adjifjdasf', 'jdiafjodafs', 'jdiajof']

http://docs.python.org/library/stdtypes.html#str.split

编辑对于空白,您还可以执行以下操作:

>>> map(str.strip, 'adjifjdasf;jdiafjodafs ; jdiajof'.split(';'))
['adjifjdasf', 'jdiafjodafs', 'jdiajof']

相关问题 更多 >