由逗号或分号分隔的值的字符串到Python列表中

Amb*_*sio 3 python string list

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

billg@microsoft.com,steve@apple.com, dhh@37signals.com
billg@microsoft.com;steve@apple.com;  dhh@37signals.com
Run Code Online (Sandbox Code Playgroud)

我想摆脱电子邮件地址周围的任何空白.

我需要将它们放入这样的Python列表中:

['billg@microsoft.com', 'steve@apple.com', 'dhh@37signals.com']
Run Code Online (Sandbox Code Playgroud)

什么是最恐怖的方式呢?谢谢.

Rom*_*net 10

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

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


sen*_*rle 6

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

[s.strip() for s in s1.replace(',', ';').split(';')]
Run Code Online (Sandbox Code Playgroud)

测试输出:

>>> 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']
Run Code Online (Sandbox Code Playgroud)