Chinaunix
标题:
python字符串截取的问题
[打印本页]
作者:
dongdong82CU
时间:
2011-12-28 14:38
标题:
python字符串截取的问题
本帖最后由 dongdong82CU 于 2011-12-29 15:44 编辑
我有n个字符串,类似“192.168.1.100:1234cbdjdd(IP和端口以及后面字符的长度都不同)”,我想把IP和端口取出来
因为ip和端口的长度都不确定,我现在现在不能以字符索引去截取字符串,不知道应该怎么写
作者:
nagaregawa
时间:
2011-12-29 13:48
这个貌似没辙了,:1234cbdjdd 端口号和后面的字符串直接没有其他的字符了吗?
或者 cbdjdd 一定是以字符开头的,也可以实现。
如果1234是端口号,后面的字符串是689abc,那么是没办法分开的
作者:
dongdong82CU
时间:
2011-12-29 15:43
端口后面的是用户名,以字母开头的
作者:
ning_lianjie
时间:
2011-12-29 15:48
没弄明白楼主的意思
不过我想可以用正则,以:为分隔线,前面是ip,后面的数字是端口,匹配/d+
作者:
Linux_rocking
时间:
2011-12-29 16:12
你这个问题用shell很好解决
echo "192.168.1.100: 1234cbdge" | sed -r 's/(.*):[ ]*([0-9]*).*/\1 \2/'
作者:
Linux_rocking
时间:
2011-12-29 16:19
awk也可以
echo "192.168.1.100: 1234cbdge" | awk -F: '{t=match($2,/[a-zA-Z]/);port=substr($2,0,t-1);print $1,port}'
作者:
Linux_rocking
时间:
2011-12-29 16:35
用python写了一个笨方法,因为我也是刚学
import string
import re
def IPandPort(str):
fli=string.split(":")
sli=re.split("[a-zA-Z]",fli.strip())
print "IP=%s, Port=%s" % (fli[0],sli[0])
作者:
noword2k
时间:
2011-12-29 17:06
本帖最后由 noword2k 于 2011-12-29 17:06 编辑
m = re.search(r"(\d*)\.(\d*)\.(\d*)\.(\d*):(\d*)(.*)", "192.168.1.100:1234cbdjd")
复制代码
看看 m.group(1)到m.group(6)
作者:
inpool
时间:
2012-01-03 21:47
本帖最后由 inpool 于 2012-01-03 21:49 编辑
ipstr = '192.168.1.100:1234cbdjdd'
ipsplit = ipstr.split(':')
ip = ipsplit[0]
for i, c in enumerate(ipsplit[1]):
if not c.isdigit():break
port = ipsplit[1][:i]
username = ipsplit[1][i:]
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2