Split strings with alternative separators
打电话给string.split()时,我想换一个分隔符
1 2 3
| >>> import string
>>> string.split('a n', ' ')
['a', 'n'] |
这是正确的。
1 2 3 4
| >>> string.split('a n"c', '"')
['a n"c']
>>> string.split('a n"c', '[ |"]')
['a n"c'] |
号
理想的分割应该是['a', 'n', 'c']。
1 2 3 4
| >>> string.split('a n""c', '[ |"]')
['a n""c']
>>> string.split('a n""c', '"')
['a n"', 'c'] |
理想的分割应该是['a', 'n', 'c']。
所以我想知道我该怎么做?
- 不推荐使用string.split();您可以直接对字符串调用该方法。
- 为什么不推荐?这不是和C++类似的吗?(哪个很好)
- 因为'a b c'.split()也可以工作;这些是str对象上的方法。
- 它不仅被弃用,而且在python 3.x中被删除。
- 为什么要移除?@罗杰曼
- [x for x in 'a n""c' if x.isalpha()]也可以工作。
- @因为它更适合作为一种方法。你可以在每一个字符串上调用它,你永远不会在非字符串上调用它。它被删除是因为,理想情况下,应该只有一种正确的方式来做事情,并且将split作为一种方法比导入模块更为合理和方便。
- @Rogerfan:这是否意味着python 2.7中的脚本不能由python 3.x运行?
- @通常,python 2.x代码并不总是有效的python 3.x代码。这就是Python3的全部要点,做了他们认为需要做的所有向后不兼容的更改。要查看一些最常用的更改,请参阅本文。
str.split()不是那么复杂,你想要的是re.split()而不是:
1
| re.split(r'["]+', some_string) |
演示:
1 2 3
| >>> import re
>>> re.split(r'["]+', 'a n""c')
['a', 'n', 'c'] |
号
- 谢谢你,马丁。当有一个尾随Whitespace前面或后,将有一个分裂的空字符串。例如,re.split(r'["]+', ' a n""c ')['', 'a', 'n', 'c', '']将返回。我怎么能避免那些空字符串?
- 提姆:re.findall(r'[^"]+', ' a n""c ')@。