8 svar
313 visningar
redgranti 3 – Fd. Medlem
Postad: 8 jun 2020 11:18

hjälp med kod

Hej Har en adresslista i excel på många rader, bifogat finns en exempel fil, jag har skrivit ett skript att ta bort mellanslaget mellan testvägen 20 A, mellanslaget ska bort mellan 20 och A och det ska slå igenom på alla rader som har en bokstav på slutet. Hur går jag tillväga? Tacksam för hjälp.

Lindehaven 820 – Lärare
Postad: 9 jun 2020 15:38

Det kan säkert lösas med hjälp av strip, lstrip, rstrip, re eller liknande. Men detta funkar också:

for name in data:
    if len(name) >= 3 and \
        name[-3] in '0123456789' and \
        name[-2] == ' ' and \
        name[-1] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
        name = name[:-2] + name[-1:]
    rows.append(name)

Laguna 28563
Postad: 9 jun 2020 16:19
Lindehaven skrev:

Det kan säkert lösas med hjälp av strip, lstrip, rstrip, re eller liknande. Men detta funkar också:

for name in data:
    if len(name) >= 3 and \
        name[-3] in '0123456789' and \
        name[-2] == ' ' and \
        name[-1] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
        name = name[:-2] + name[-1:]
    rows.append(name)

I stället för
    name[-1] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
kan man använda
    name[-1].isupper()

Lindehaven 820 – Lärare
Postad: 9 jun 2020 16:43

Och om man accepterar alla bokstäver (både versaler och gemener) så kan man använda name[-1].isalpha()

redgranti 3 – Fd. Medlem
Postad: 10 jun 2020 09:23

Tjena, tack för input.. Får det dock inte att funka.. :(

Lindehaven 820 – Lärare
Postad: 10 jun 2020 09:30

Skriv gärna vad som inte funkar så är det lättare att hjälpa. Får du "Unexpected indentation" på rad 30? Då får du ta bort eller indentera rad 28.

redgranti 3 – Fd. Medlem
Postad: 10 jun 2020 09:31

Hej det händer inget när jag kör filen, får ingen resultatfil.

Laguna 28563
Postad: 10 jun 2020 09:57

Stoppa in print på en massa ställen så du ser vad som körs.

Lindehaven 820 – Lärare
Postad: 10 jun 2020 11:15
redgranti skrev:

Hej det händer inget när jag kör filen, får ingen resultatfil.

Titta på vilket felmeddelande det blir när programmet körs. Får du "Unexpected indentation" på rad 30? Om det är på det viset så kommer programkörningen att avbrytas där och ingen resultatfil skapas.

Att lägga in anrop till print-funktionen kan ibland hjälpa vid felsökning, men i detta fall är det antagligen just det som ger felet.

Svara Avbryt
Close