脫字符我有一個巨大的文本文件,每行似乎是這樣的:分割字符串可以用Python
某種通用的菜單^ a_sub_menu_title ^^ pagNumber
注意,第一個「一般菜單「有白色空格,第二部分(小標題)每個單詞用」_「字符分隔,最後是一個數字(一個頁碼)。我想分割3個(明顯的)部分中的每一行,因爲我想在python中創建某種目錄。
我正在嘗試重新模塊,但由於插入符號在這個模塊中有很強的意義,所以我無法弄清楚它是如何做到的。
有人能幫我嗎?
脫字符我有一個巨大的文本文件,每行似乎是這樣的:分割字符串可以用Python
某種通用的菜單^ a_sub_menu_title ^^ pagNumber
注意,第一個「一般菜單「有白色空格,第二部分(小標題)每個單詞用」_「字符分隔,最後是一個數字(一個頁碼)。我想分割3個(明顯的)部分中的每一行,因爲我想在python中創建某種目錄。
我正在嘗試重新模塊,但由於插入符號在這個模塊中有很強的意義,所以我無法弄清楚它是如何做到的。
有人能幫我嗎?
>>> "Some sort of general menu^a_sub_menu_title^^pagNumber".split("^")
['Some sort of general menu', 'a_sub_menu_title', '', 'pagNumber']
精彩!!!! ...這是我需要的一切! – Alejandro
您需要做的是「逃避」特殊字符,如r'\^'
。但是,在這種情況下,比正則表達式更好:
line = "Some sort of general menu^a_sub_menu_title^^pagNumber"
(menu, title, dummy, page) = line.split('^')
以更直接的方式爲您提供組件。
精彩!!!! ......這是我需要的一切! – Alejandro
你可以只說string.split("^")
將字符串分成包含每個段的數組。唯一需要注意的是,它會將連續插入的字符分成一個空字符串。你可以通過將連續的克拉摺疊成一個克拉,或者檢測結果數組中的空字符串來防止這種情況發生。
欲瞭解更多信息,請參閱http://docs.python.org/library/stdtypes.html
這是否幫助?
精彩!!!! ......這是我需要的一切!!!! – Alejandro
如果你只是想三件你可以做到這一點通過生成器表達式:
line = 'Some sort of general menu^a_sub_menu_title^^pagNumber'
pieces = [x for x in line.split('^') if x]
# pieces => ['Some sort of general menu', 'a_sub_menu_title', 'pagNumber']
這也有可能是你的文件正在使用的格式,是與csv
模塊兼容,還可以觀察到的是,特別是如果格式允許引用,因爲然後line.split
會中斷。如果格式不使用引號,它只是分隔符和文本,line.split
可能是最好的。
此外,對於re
模塊,任何特殊字符都可以使用\
進行轉義,如r'\^'
。我建議在跳轉使用re
之前建議1)學習如何編寫正則表達式,2)首先尋找解決問題的方法,而不是跳至正則表達式 - 「有些人在遇到問題時,會想」我知道,我會用正則表達式。「現在他們有兩個問題。 »
一個簡單的谷歌搜索術語「蟒蛇拆分字符串」會產生你的答案。我並不是說要苛刻,但如果你不學習如何進行谷歌搜索,並且你的所有問題都依賴堆棧溢出,那麼要成爲一名稱職的程序員需要很長時間。祝你好運。 –