我正在尝试分割一个字符串,无论我做什么,字符串都不会在一些字符之后分裂,不仅空间无效(对于其他字符也是如此)。我正在学习' re&#39 ;模块,你可以更准确吗?谢谢你。
import re
String = "Integrity Home Care has an opening on our Leadership Team for a Salaried Private Care Nursing Supervisor.TOoooooo"
print(re.split(r'\s*',String,re.I|re.M))
答案 0 :(得分:2)
您正在传递re.I|re.M
(10)作为maxsplit
参数的值,因此它会在您告知之后十次停止分割。
如果您不想传递maxsplit
的值,请为标志使用命名参数:
re.split(r'\s*', String, flags=re.I|re.M)
另一个选择是不将标志作为参数传递,而是将它们包含在正则表达式中。
re.split(r'(?im)\s*',String)
我在这些示例中保留了不区分大小写的标记,但是你的正则表达式并不匹配任何可能包含案例的字符,所以你可以将其删除。
现在到了正则表达式本身。 *
匹配前一个模式的零次或多次出现。这几乎与字符串中的任何地方都匹配,因此理论上字符串可以在任何地方分割,这就是为什么你会得到关于非空模式的警告。这些匹配会被忽略,但最好使用+
,这意味着一个或更多次出现。
最后,我不得不提到你可能只能使用String.split()
,默认情况下会拆分空格,所以你可能会取消正则表达式。
答案 1 :(得分:0)
re.split(r'\s*',String,re.I|re.M)
必须为re.split(r'\s*',String,flags=re.I|re.M)
。第三个位置参数ro re.split
是片段的最大数量,您将其设置为re.I|re.M
,即10。
答案 2 :(得分:0)
您也可以从代码中删除re.I|re.M
。试试这个:
print(re.split(r'\s',String))
输出:
['Integrity', 'Home', 'Care', 'has', 'an', 'opening', 'on', 'our', 'Leadership', 'Team', 'for', 'a', 'Salaried', 'Private', 'Care', 'Nursing', 'Supervisor.TOoooooo']