[PROBLEM] Python3.3 .format

Programovacie jazyky, rady, poradňa...
Redpoint1
Light Expert
Light Expert
Príspevky: 66
Registrovaný: 25 sep 2006, 23:24
Kontaktovať používateľa:

[PROBLEM] Python3.3 .format

Príspevok od používateľa Redpoint1 »

Zdravim,

robim akurat jeden projekt do skoly, kde mam vypisat zlozky a subory pod seba s nejakou medzerou, ktora sa udava podla hlbky. Robim to cez rekurziu, kde posiela do funkcie cislo hlbky a to hodim do formatu. Problem je ten, ze u suborov ignoruje ten formal align (zlozky idu v pohode).

Zdrojak:

Kód: Vybrať všetko

def print_struct(strom):
        def vypis(pole, n):
            for subor in pole:
                if (type(subor) == str) and (pole[0] == subor): #prva hodnota listu je zlozka
                    form = '{:>'+str(n*4)+'}'
                    print(form.format(subor))
                elif (type(subor) == str): #ak ostatne su stringy su to subory
                    form = '{:>'+str((n+1)*4)+'}' #<<<PROBLEM
                    print(form.format(subor)) #
                else: vypis(subor, n+1) #ak je to podzlozka vstup do nej
        vypis(strom, 0)

strom = ['cache', ['ADB', 'Hotfix.tbl', ['enUS', 'BattlePetAbility.adb', 'BattlePetAbilityEffect.adb', 'BattlePetAbilityState.adb', 'BattlePetAbilityTurn.adb', 'BattlePetBreedQuality.adb', 'BattlePetBreedState.adb', 'BattlePetEffectProperties.adb', 'BattlePetNPCTeamMember.adb', 'BattlePetSpecies.adb', 'BattlePetSpeciesState.adb', 'BattlePetSpeciesXAbility.adb', 'BattlePetState.adb', 'BattlePetVisual.adb', 'BroadcastText.adb', 'Creature.adb', 'GameObjects.adb', 'Item-sparse.adb', 'Item.adb', 'ItemCurrencyCost.adb', 'ItemExtendedCost.adb', 'KeyChain.adb', 'Locale.adb', 'Location.adb', 'MapChallengeMode.adb', 'MarketingPromotionsXLocale.adb', 'Path.adb', 'PathNode.adb', 'PathNodeProperty.adb', 'PathProperty.adb', 'QuestPackageItem.adb', 'SceneScript.adb', 'SceneScriptPackage.adb', 'SceneScriptPackageMember.adb']], ['WDB', ['enUS', 'creaturecache.wdb', 'gameobjectcache.wdb', 'itemtextcache.wdb', 'npccache.wdb', 'pagetextcache.wdb', 'questcache.wdb', 'wowcache.wdb']]]
print_struct(strom)
Pochopenie struktury stromu:
Zaciatok listu je zlozka (aj pri vnorenych listov). Ostatne indexy listu su bud zlozky (vnorene listy), alebo subory (cisty string)

Dufam, ze mi date nejaku radu, ako zaistit, aby ten align fungoval aj pri suboroch (najlepsie cez ten .format).
Dakujem.
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: [PROBLEM] Python3.3 .format

Príspevok od používateľa xadman »

Tento riadok '{:>'+str((n+1)*4)+'}' má vypísať patričný align (počet medzier) a za ním názov súboru ?
Redpoint1
Light Expert
Light Expert
Príspevky: 66
Registrovaný: 25 sep 2006, 23:24
Kontaktovať používateľa:

Re: [PROBLEM] Python3.3 .format

Príspevok od používateľa Redpoint1 »

Ten riadok iba zjednocuje pravidlo formatu do celistveho stringu (presnejsie definujem v nej kolko medzier ma byt), kedze funkciu .format() ma string (vypisuje sa hned pod zmienenym riadkom)
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: [PROBLEM] Python3.3 .format

Príspevok od používateľa xadman »

Skús takto:

form = " "*(n+1)*4
print(form + "{0}".format(subor))
Redpoint1
Light Expert
Light Expert
Príspevky: 66
Registrovaný: 25 sep 2006, 23:24
Kontaktovať používateľa:

Re: [PROBLEM] Python3.3 .format

Príspevok od používateľa Redpoint1 »

Ano funguje to. Dakujem za pomoc :)
Napísať odpoveď