Permalänk

python 3 <3

Tjabba tjenare

undrar hur man skriver backslash \ och citationstecken " inuti python 3 då man printar något

Permalänk
Keeper of the Bamse

Du använder backslash som escape-character. Så ett backslash blir \\ och ett citationstecken blir \"

Visa signatur

i7 10770K, NH-D15. 16GB corsair. RTX 3080. 3TB nvme. Samsung G9. Fractal Torrent Compact. Corsair RM850.
Logitech G pro wireless mouse. Logitech TKL915 wireless. Logitech Pro X Wireless.
Macbook pro M1 (16GB, 512GB). HP Reverb G2.
www.bamseclockers.com

Permalänk
Hedersmedlem

Python kan använda antingen apostrof eller citationstecken som strängavgränsare, och det "andra" tecknet behöver då inte specialbehandlas.

>>> print('Denna "sträng" är \'OK\'!') Denna "sträng" är 'OK'! >>> print("Denna 'sträng' är \"OK\"!") Denna 'sträng' är "OK"!

Vad gäller backslash så används det som nämnts ovan vanligen för att indikera vissa speciella tecken, så som

  • '\n': ny rad

  • '\t': tabb

  • '\\': backslash själv

där den sista varianten är till för att skriva en explicit backslash utan att tolka efterföljande tecken som en modifierare. En lurig grej är annars att om man skriver en backslash som inte följs av en giltig modifierare så försöker Python vara snällt och tolkar det då "literalt", vilket gör att den som inte vet vad som pågår kan bli överraskad:

>>> print('\hej') \hej >>> print('\nej') ej

2. Lexical analysis → 2.4. Literals → 2.4.1. String and Bytes literals i Python-dokumentationen ger hela listan av dessa modifierare.

Dock är det rätt sällan behovet att skriva backslash i strängar mot användaren dyker upp. Däremot är det väldigt vanligt när man skriver exempelvis reguljära uttryck. För att inte göra dessa än mer oläsbara än vad de av naturen ändå lätt är så kan man ange att en sträng är "rå" genom prefixet r, vilket gör att backslashsekvenser inte tolkas däri (kortfattat sagt; läs om "raw strings" i manualen för mer exakt info):

>>> print(r'\nej') \nej

Detta bör man använda för reguljära uttryck då det är praxis och underlättar, men troligen inte på speciellt många andra ställen.

Tillägg: Kan lika gärna passa på att nämna en ytterligare mekanism som Python erbjuder för att beteckna strängar: trippla apostrofer/citationstecken. En sträng som avgränsas på detta sätt kan till skillnad från tidigare nämnda varianter innehålla faktiska radbrytningar, och dessutom behöver enkla apostrofer/citationstecken inte specialbehandlas i något av fallen:

>>> print('''Denna "sträng" är 'OK'!''') Denna "sträng" är 'OK'! >>> print("""Denna "sträng" är 'OK'!""") Denna "sträng" är 'OK'! >>> print('''Vi kan även ... byta rad ... mitt i en sådan sträng''') Vi kan även byta rad mitt i en sådan sträng

I praktiken används dessa trippelavgränsade strängar främst i docstrings.

Tillägg om trippelavgränsade strängar.
Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Skrivet av phz:

Python kan använda antingen apostrof eller citationstecken som strängavgränsare, och det "andra" tecknet behöver då inte specialbehandlas.

>>> print('Denna "sträng" är \'OK\'!') Denna "sträng" är 'OK'! >>> print("Denna 'sträng' är \"OK\"!") Denna 'sträng' är "OK"!

Vad gäller backslash så används det som nämnts ovan vanligen för att indikera vissa speciella tecken, så som

  • '\n': ny rad

  • '\t': tabb

  • '\\': backslash själv

där den sista varianten är till för att skriva en explicit backslash utan att tolka efterföljande tecken som en modifierare. En lurig grej är annars att om man skriver en backslash som inte följs av en giltig modifierare så försöker Python vara snällt och tolkar det då "literalt", vilket gör att den som inte vet vad som pågår kan bli överraskad:

>>> print('\hej') \hej >>> print('\nej') ej

2. Lexical analysis → 2.4. Literals → 2.4.1. String and Bytes literals i Python-dokumentationen ger hela listan av dessa modifierare.

Dock är det rätt sällan behovet att skriva backslash i strängar mot användaren dyker upp. Däremot är det väldigt vanligt när man skriver exempelvis reguljära uttryck. För att inte göra dessa än mer oläsbara än vad de av naturen ändå lätt är så kan man ange att en sträng är "rå" genom prefixet r, vilket gör att backslashsekvenser inte tolkas däri (kortfattat sagt; läs om "raw strings" i manualen för mer exakt info):

>>> print(r'\nej') \nej

Detta bör man använda för reguljära uttryck då det är praxis och underlättar, men troligen inte på speciellt många andra ställen.

Tack så mycket för informationen, uppskattar verkligen att du tog tiden att skriva ett så utförligt svar. <3