Форум сайта python.su
Как можно список вида
Преобразовать в вид:
1
2
3
4
…
24
Офлайн
используй split
Офлайн
o7412369815963я знаю что можно split a.split(',') и потом срез
используй split
Офлайн
>>> a = ['1,2,4,5,6,7,8,9,10']
>>> for x in a[0].split(','):
... print int(x)
...
1
2
4
5
6
7
8
9
10
Отредактировано (Фев. 7, 2010 11:03:22)
Офлайн
Тогда понятно, без цикла не обойтись, есть еще один такого же характера вопрос
Результат скрипта на выходе:
может быть и больше строк:
их нужно объединить
Всем спасибо!
Офлайн
можно join вместо цикла
>>> print '\n'.join('1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23'.split(','))
1
2
4
...
Офлайн
Еще один вопросик
в результате написание скрипта получил вывод:
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
Офлайн
код свой покажи, и входные данные
Офлайн
o7412369815963
код свой покажи, и входные данные
def dmac(host):
user="xxx"
password="xxxx"
try:
tn = telnetlib.Telnet(host,23,15)
tn.set_debuglevel(0)
tn.read_until(":")
tn.write(user+"\n")
tn.write(password+"\n")
tn.write("show vlan\n")
tn.write("a\n\n\n\n")
tn.write("logout\n")
a = tn.read_all()
tn.close()
print '-' * 50
for line in a.split('\n'):
if ('VID' in line):
vid = line
if ('Current Untagged' in line):
port = line
res = '%s %s' %(vid, port)
if res.split()[0] == 'VID' and int(res.split()[2]) > 80 and len(res.split()) > 11:
res2 = res.split()
result = []
for p in res2[-1].split(','):
if not '-' in p:
if not '' in p:
for x in p.split():
o = int(x)
resul = '%s\t %s' %(host, o)
t(resul)
if '-' in p:
sp = map(int, p.split('-'))
result.extend(range(sp[0], sp[1]+1))
res4 = ','.join(map(str, result))
res5 = '\n'.join(res4.split(','))
if not '' in res5.split():
for x in res5.split():
o1 = int(x)
resul = '%s\t %s' %(host, o1)
t(resul)
except:
print 'ERROR\t' * 3
def t(resul):
-----------------------------------------
входные данные для обработки:
mon6-19_2 1
mon6-19_2 2
mon6-19_2 3
mon6-19_2 4
mon6-19_2 5
mon6-19_2 6
mon6-19_2 8
mon6-19_2 9
mon6-19_2 10
mon6-19_2 11
mon6-19_2 12
mon6-19_2 14
mon6-19_2 15
mon6-19_2 16
mon6-19_2 18
mon6-19_2 19
mon6-19_2 20
mon6-19_2 21
mon6-19_2 22
mon6-19_2 23
-----------------------------------------------------------------------------
for fname in glob.glob('/home/mac/*.%s*' %(resul.split()[0])):
for line in open(fname):
if len(line.split()) > 4 and len(line.split()) < 8:
---------------------------------------------------------------------------------------
входные данные:
вот на этот месте нужно убирать дублирующие строки
162 162 00:11:95:f5:7d:d1 4 Dynamic
162 162 00:11:95:f5:7d:d1 4 Dynamic
162 162 00:11:95:f5:7d:d1 4 Dynamic
162 162 00:11:95:f5:7d:d1 4 Dynamic
162 162 00:11:95:f5:7d:d1 4 Dynamic
162 162 00:11:95:f5:7d:d1 4 Dynamic
--------------------------------------------------------------------------------
if re.search('^%s$' %(resul.split()[1]), line.split()[3]):
for fname1 in glob.glob('/etc/iptab/vlan*.txt'):
for line1 in open(fname1):
if not '#' in line1 and line.split()[2] in line1:
print '%s %s' %(resul, line1)
Офлайн
>>> a = """mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov
mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov"""
>>> b = a.split('\n')
>>> b
['mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov',
'mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov',
'mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov',
'mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov',
'mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov']
>>> c = set(b)
>>> c
set(['mon6-19 4 10.1.62.5 00:11:95:f5:7d:d1 vlan162 davydov'])
Офлайн