SORU
18 Mayıs 2012, Cuma


Uzun oluşturmak için Pythonic yol çok satırlı dize

Çok uzun bir sorgu var. Python birkaç satır ayırmak istiyorum. Bir şekilde bunu yapmak için javascript olurdu kullanarak birkaç cümle ve katılma onlarla operatörü (biliyorum, belki de en verimli bir şekilde yapmak, ama ben gerçekten merak performansı bu aşamada, sadece kod okunabilirliği). Örnek:

var long_string='some text not important. just garbage to' 
                'illustrate my example';

Python ile benzer bir şey yapmaya çalıştım ama \ uzun bir dize bölmek için kullandım işe yaramadı. Ancak, eğer bu, bunu yapmanın tek/en/pythonicest yolu ise emin değilim. Garip görünüyor. Gerçek kod:

query= 'SELECT   action.descr as "action", '\
    'role.id as role_id,'\
    'role.descr as role'\
    'FROM '\
    'public.role_action_def,'\
    'public.role,'\
    'public.record_def, '\
    'public.action'\
    'WHERE role.id = role_action_def.role_id AND'\
    'record_def.id = role_action_def.def_id AND'\
    'action.id = role_action_def.action_id AND'\
    'role_action_def.account_id = ' account_id ' AND'\
    'record_def.account_id=' account_id ' AND'\
    'def_id=' def_id

Herhangi bir öneriniz mutluluk duyacağız

CEVAP
18 Mayıs 2012, Cuma


Çok satırlı dizeleri bahsediyorsun? Kolay, üç çift tırnak başlatmak ve onları bitirmek için kullanın.

s = """ this is a very
        long string if I had the
        energy to type more and more ..."""

Tek tırnak da (başlangıç ve sonunda tabii ki bunların 3) kullanım ve sonuç dizesi s sadece başka bir dize gibi davranabilirsiniz.

NOT: Herhangi bir dize ile, başlangıç ve bitiş tırnak arasında bir şey dizesi bir parçası haline gelir, bu örnek bir lider boş @root45 tarafından belirttiği gibi) sahiptir. Bu dize de boşlukları ve yeni satır içerir.

., I. e:

' this is a very\n        long string if I had the\n        energy to type more and more ...'

Son olarak, bu gibi Python uzun hatları inşa edebilirsiniz:

 s = ("this is a very"
      "long string too"
      "for sure ..."
     )

hangi olacaktırdeğilvardır boşluk veya yeni satır herhangi bir ekstra:

'this is a verylong string toofor sure ...'

Hayır virgül gerekli, sadece dizeleri birlikte parantez bir çift katıldı ve emin herhangi gerekli boşlukları ve yeni satır için hesap edilecek yer.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chrmoe

    chrmoe

    7 Kasım 2006
  • Professor Messer

    Professor Me

    27 NİSAN 2007
  • spyib

    spyib

    9 Ocak 2007