我想使用由'/'字符分隔的Python拆分字符串數據。問題是該字符串可能會出現多個'/'字符,但是我想僅使用'/'分割而不使用'\'0123例如, \/2/CD」變成‘1 \/2’和‘CD’如何在'/'分隔符上拆分字符串,但是在''發生時緊跟在''後防止拆分
回答
在正則表達式使用負向後斷言:
>>> re.split(r'(?<!\\)/', r'1\/2/CD')
['1\\/2', 'CD']
從docs:
(?<!...)
相配如果字符串中的當前位置不是由 匹配
...
之前。這被稱爲 負反序斷言斷言。類似的 爲正向lookbehind斷言, 包含的模式只能匹配 某些固定長度的字符串。樣式 以負向倒序 開頭,斷言可能會在搜索字符串的開頭 處匹配。
這工作時,你有第一片空:
>>> re.split(r'(?<!\\)/', r'/CD')
['', 'CD']
爲了第一次就正確使用+1:你可能還想指出'maxsplit'參數(因爲這似乎是標題所要求的) – Cameron 2011-03-07 23:00:43
謝謝,這是有效的。如前所述(?!...)在python文檔中提到的以下鏈接: http://docs.python.org/howto/regex.html 爲什麼在語法這兩個文件? – 2011-03-07 23:10:38
明白了,出於某種原因,這裏的how to do http://docs.python.org/howto/regex.html只是談論負面的lookahead斷言而不是lookbehind。 – 2011-03-07 23:18:00
可以使用正則表達式對象的分割方法,只是拆分上/
未遵循\
(使用負回顧後):
import re
str = u'1\\/2/CD'
re.split(r'(?<!\\)/',str)
字符串的split()方法不接受正則表達式。相反,一個正則表達式對象也有一個'split()'方法。 – kindall 2011-03-07 22:56:29
這不是一個預見。 – nosklo 2011-03-07 22:58:05
感謝您的評論,我將它們納入我的答案。 – markijbema 2011-03-07 23:51:18
如果分隔符總是在字符串的結尾,你可以通過用戶str.rpartition:
>>> print u'1\/2/CD'.rpartition('/') (u'1\\/2', u'/', u'CD')
- 1. 拆分字符串但分隔符
- 2. 如何在分隔符處拆分字符串,除非該分隔符後面跟有特定的模式?
- 3. 如何在基於java的字符串「」拆分爲分隔符
- 4. Python:我如何在字符串拆分中包含分隔符?
- 5. 在Python中,如何拆分字符串並保留分隔符?
- 6. 分割字符串,但保留分隔符拆分
- 7. 拆分字符串在字
- 8. c#拆分字符串與一些分隔符和分隔符
- 9. 如何在最後發生的序列中拆分字符串
- 10. 拆分逗號分隔字符串5
- 11. TSQL拆分逗號分隔字符串
- 12. 拆分逗號分隔字符串/值
- 13. 拆分逗號分隔的字符串
- 14. 拆分逗號分隔字符串
- 15. 拆分字符串在python
- 16. 拆分字符在vb.net串
- 17. ArrayIndexOutOfBoundsException在拆分字符串
- 18. 在\ b's上拆分字符串,但在子字符串\ b之間沒有拆分字符串
- 19. 拆分字符串而不刪除分隔符,但是禁止空捕獲組
- 20. 如何在Oracle中拆分逗號分隔的字符串
- 21. 如何在awk中將分隔字符串拆分爲數組?
- 22. 如何在列表中拆分管道分隔的字符串?
- 23. 在字符串上拆分字符串而不是字符
- 24. 之後拆分字符串?
- 25. 拆分後的字符串
- 26. 如何拆分由|分隔的字符串字符
- 27. 如何拆分用多個字符分隔的字符串?
- 28. C#拆分字符串但保留分隔符
- 29. Elisp拆分字符串函數來拆分字符串。字符
- 30. 拆分在C++字符串使用2個分隔符「+」和「 - 」
標題問一個完全不同於問題的東西... – 2011-03-07 22:53:57
是的,我不得不刪除我的答案。 – dappawit 2011-03-07 23:02:46
爲混淆標題道歉。 – 2011-03-07 23:08:52