看板 Python 關於我們 聯絡資訊
大家好,小弟是Python新手,最近在學爬蟲遇到了一些問題。 我想在搜尋任意字串,字串內容不確定, 只想要字串內有":(冒號)"的就不回傳,若字串不含冒號,就回傳整個字串。 我試了很多方法都沒辦法得到我想要的結果QQ 像是我用print(re.search(r'.*?(?!:).*?$','123:abc')) 第一組.*?和第二組.*?分別表示冒號前後的任意字串,然後中間(?!:)想排除掉冒號。 但是得到的結果是<_sre.SRE_Match object; span=(0, 7), match='123:abc'> 無法排除掉QQ 麻煩大家解答了,感恩<(__ __)> -- ╭─╮ ──╮ ╭─┤╭╮ ╭╭─╮╮ ╭ │ │ │ ││││││ ││││ ╰─╮ ╭─┼╮╰─┼╯││││○││││ │ │ ││ │ ││││ ││││ ╰─╯ ╰─╯╰──╯ ╰╰╯╰─╯╰╯╯ 傻瓜,我們都一樣~~ ψsagwow -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.24.209 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1522548180.A.E4D.html
stucode: r = s if ':' not in s else None # s = '123:abc' 04/01 10:36
一樓大大的方法我看不太懂@@a
s860134: [^:] 04/01 11:30
neil987: 如果是只要有冒號就不要 用樓上的in就好了 04/01 11:31
s860134: 在[]中 ^前墜代表反向匹配... 你可以在再看一下書@@ 04/01 11:31
s860134: https://regex101.com/#python 這網站玩玩看八 04/01 11:33
neil987: 如果要找:在哪裏 用[:]就好了吧 04/01 11:35
s860134: 發現這樣會把 123:234 切開 QQ 04/01 12:14
s860134: (?:[ ]|^)([^:\s]+)(?!:)\b 取 group(1) 不知道有沒漏 04/01 12:39
s860134: 結論上還是像一樓另外篩選比較乾淨簡單 04/01 12:40
cutekid: 樓上的解法 123-123:abc 會 match 唷 04/01 13:13
s860134: (?:[ ]|^)([^:\s]+)(?!:)(?=\s|$) 04/01 16:48
s860134: 好像越弄越肥越看不懂惹... 04/01 16:48
s860134: (?:[ ]|^)([^:\s]+)(?=\s|$) 斷言找頭找尾好像就可以 04/01 16:49
coeric: if re.search(':',string)==None:print string 04/01 20:56
coeric: 是我誤會了原意,還是? 04/01 20:57
感謝大家提供的方法,待我一一試過 ※ 編輯: sagwow (123.195.13.230), 04/01/2018 22:11:29
stucode: 那句的意思是,如果字串 s 中不包含冒號就把 s 賦值給 04/01 22:51
stucode: 變數 r,否則就把 r 設為 None。s 是你要搜尋的任意字串 04/01 22:51
stucode: 就是文中第三句描述的功能。不過重新看了一下內文,你想 04/01 22:51
stucode: 要的是把字串中的冒號去掉嗎? 04/01 22:52