Найти - Пользователи
Полная версия: Списки!
Начало » Python для новичков » Списки!
1 2 3
avdoshkin
Как можно список вида



Преобразовать в вид:
1
2
3
4

24
o7412369815963
используй split
avdoshkin
o7412369815963
используй split
я знаю что можно split a.split(',') и потом срез
но полны результат не получается, я бы не писал.
Zubchick
>>> 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
avdoshkin
Тогда понятно, без цикла не обойтись, есть еще один такого же характера вопрос
Результат скрипта на выходе:



может быть и больше строк:





их нужно объединить


Всем спасибо!
bazooka
можно 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
...
avdoshkin
Еще один вопросик
в результате написание скрипта получил вывод:
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
повторяющихся строк будет сотни а то и тысячи, нужно чтобы при выводе по split() вывод был один, вообщем убрать дублирующие строки.
o7412369815963
код свой покажи, и входные данные
avdoshkin
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)
bazooka
>>> 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'])
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB