2016-03-31 28 views
1
@staticmethod 
def next_group_id(): 
    cursor = connections['ips4'].cursor() 
    cursor.execute(Ips4Manager.SQL_GET_ALL_GROUP_IDS) 
    row = cursor.fetchall() 
    if row is not None: 
     string_num = str(row) 
     max_number = max(string_num) 
     print max_number 
    else: 
     logger.debug("cannot determine next group id") 
     return False 
outputs : (8L,) 

Bir dizeye dönüştürmenin en verimli yolu nedir?
Python'da yeniyim, herhangi bir yardım memnuniyetle karşılanacaktır.Long to String Python Dönüştürme

+0

((2L,), (3L,), (4L,), (6L,), (8L,) ile cevap verir) max numarasını max() ile çekerim ve bunu bir int olarak dönüştürmeye çalıştığımda 8L alırım L'nin baz 10 olmadığını söyleyen bir hata veriyor. – user5601513

+0

str (int (satır [0])) veya str (satır [0]) gibi şeyler denediniz mi? str ((8L,) [0]) 8 üretmelidir. Yanıtlar tuple gibi görünür. –

+1

Kodunuzun nasıl çıkış yapabileceğini anlamıyorum '(8L,)'. String_num'un 'max'ı yalnızca tek bir karakter olabilir (dizgedeki" en büyük "karakter). – Dunes

cevap

2

Gördüğünüz şey, row'daki bilgilerin aslında bir tupl listesi olmasıdır. Bu tupllerin her birinin bir üyesi var.

Yazdırmayı deneyin max(row)[0].

Bu örneğe bakın; Sadece Python 2'de çalıştığını göstermek için

In [7]: row = [(1,), (2,), (8,)] 

In [8]: max(row) 
Out[8]: (8,) 

In [9]: print(max(row)[0]) 
8 

(Python 3 kullanıyorum çünkü burada L görmüyoruz): SQL sorgusu fazla bilgi eklemek için

Python 2.7.11 (default, Jan 9 2016, 15:47:04) 
[GCC 4.2.1 Compatible FreeBSD Clang 3.4.1 (tags/RELEASE_34/dot1-final 208032)] on freebsd10 
Type "help", "copyright", "credits" or "license" for more information. 
>>> row = [(1L,), (2L,), (8L,)] 
>>> max(row) 
(8L,) 
>>> print(max(row)[0]) 
8 
+0

değil. Python 2'de L'yi de göremezsiniz. “Uzun” str, bir L eklemez, sadece “repr” bunu yapar (ve 'print' str' kullanır). – Dunes