作者auoauo (1493)
看板Python
標題Re: [問題] 字串處理 - 簡化程式碼
時間Tue Feb 25 01:27:58 2014
# 剛好最近在用
# 針對您的items = '127.0.0.1:443;SSL'這個例子的簡單範例:
import re
match = re.search(u'''
(?P<ip>[\d]+\.[\d]+\.[\d]+\.[\d]+)?
:
(?P<port>[\d]+)?
;
(?P<comment>[\S]+)?
''', items, re.X)
if match:
ip, port, comment = match.group('ip'), match.group('port'), match.group('comment')
※ 引述《zha0 (這個帳號是掛網用)》之銘言:
: 還是一樣又用 C 的方式在寫程式了 Q_q
: 輸入的資料
: print "\t# {IP} : {PORT} ; {COMMENT}"
: print "\tIP:Port1,Port2.....;Comment"
: print "\tIP1-IP2:Port1;Comment"
: print "\tIP/24:Port1\n"
: print "\tIP;Comment"
: 處理的程式片段
: items = '127.0.0.1:443;SSL'
: ip = ''
: port = ''
: ipp = ''
: comm = ''
: if items.find(';'):
: ipp, comm = items.split(';')
: if ipp == '':
: ipp = options.insert
: if ipp.find(':'):
: ip, port = ipp.split(':')
: if ip == '':
: ip = options.insert
: print ip, port, comm
: 請問如何將上面的程式碼, 寫的好看一點, 感覺一直 if 判斷, 好像沒 python 的味道 ~"~
: split 可以給了個字元 : ; 然後他就幫你自己切好嗎 ? 好像先從 : 切會比從 ; 切好 ?___?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.176.100.141
※ 編輯: auoauo 來自: 180.176.100.141 (02/25 01:30)
※ 編輯: auoauo 來自: 180.176.100.141 (02/25 01:30)
推 darkgerm:[\d] 可以寫 \d 就好啊XD 02/25 02:17
推 ccwang002:除了用 re.X 之外,也可以多行字串合在一起。Ex 02/25 09:05
→ ccwang002: "(?P<ip>\d+.\d+.\d+.\d+" # IP address 02/25 09:06
→ ccwang002: "(?P<port>\d+)" # 有需要註解的話 02/25 09:07
→ ccwang002:沒逗號的 ("..." "...") 會自動合併成一個字串 02/25 09:08
推 pycontw:喔喔樓上感謝, 忘了還能利用這樣來註解 02/27 00:59
→ auoauo:Thanks sharing! 02/27 11:00
推 huggie:覺得 Regex 很複雜,我都喜歡用 split 耶. 03/04 19:18
→ huggie:ip_port, comm = items.split(';') 03/04 19:18
→ huggie:ip, port = ip_port.split(':') 03/04 19:18
→ huggie:不過如果 port 不存在就有 valueError,我就抓exception 03/04 19:19