C'è un carattere speciale sulla fine delle stringhe Python? Come se fosse \ 0 in C o C++. Voglio contare la lunghezza della stringa in python senza usare la funzione integrata len
.Le stringhe Python terminano con un NULL terminante?
risposta
Non esiste un carattere di fine stringa in Python, almeno non uno che è esposto e che dipenderebbe dall'implementazione. Gli oggetti stringa mantengono la loro lunghezza e non è qualcosa di cui devi preoccuparti. Esistono diversi modi per ottenere la lunghezza della stringa senza utilizzare len()
.
str = 'man bites dog'
unistr = u'abcd\u3030\u3333'
# count characters in a loop
count = 0
for character in str:
count += 1
>>> count
13
# works for unicode strings too
count = 0
for character in unistr:
count += 1
>>> count
6
# use `string.count()`
>>> str.count('') - 1
13
>>> unistr.count(u'') - 1
6
# weird ways work too
>>> max(enumerate(str, 1))[0]
13
>>> max(enumerate(unistr, 1))[0]
6
>>> str.rindex(str[-1]) + 1
13
>>> unistr.rindex(unistr[-1]) + 1
6
# even weirder ways to do it
import re
pattern = re.compile(r'$')
match = pattern.search(str)
>>> match.endpos
13
match = pattern.search(unistr)
>>> match.endpos
6
Sospetto che questa sia solo la punta dell'iceberg.
Usare espressioni regolari per ottenere la lunghezza di una stringa? Questa è la cosa più divertente che ho visto oggi. – Shuklaswag
count=0
for i in 'abcd':
count+=1
print 'lenth=',count
altro modo:
for i,j in enumerate('abcd'):
pass
print 'lenth=',i+1
enumerate
è costruito in funzione che restituisce una tupla (indice e valore)
Ad esempio:
l= [7,8,9,10]
print 'index','value'
for i ,j in enumerate(l):
print i,j
uscite:
index value
0 7
1 8
2 9
3 10
l = "this is my string"
counter = 0
for letter in l:
counter += 1
>>> counter
17
per rispondere alla domanda che lei ha chiesto: non c'è un NULL di terminazione o qualcosa di simile alla fine di una stringa Python (che si può vedere), perché non c'è modo per te di "cadere alla fine" di una stringa. Internamente, l'implementazione Python più popolare è scritta in C, quindi probabilmente c'è una stringa con terminazione NULL da qualche parte sotto il cofano. Ma è completamente opaco per te come sviluppatore Python.
Se si desidera ottenere la lunghezza senza utilizzare una funzione incorporata, è possibile eseguire una serie di operazioni diverse. Ecco un'opzione che è diversa dalle altre postate qui:
sum([1 for _ in "your string goes here"])
che è, a mio parere, un po 'più elegante.
Python probabilmente NON usa la terminazione null internamente, perché le stringhe possono contenere valori nulli: '\ 0' (echos '\ x00') –
diverse cose interessanti che ho trovato:
s_1 = '\x00'
print ("s_1 : " + s_1)
print ("length of s_1: " + str(len(s_1)))
s_2 = ''
print ("s_2 : " + s_2)
print ("length of s_2: " + str(len(s_2)))
if s_2 in s_1:
print ("s_2 in s_1")
else:
print ("s_2 not in s_1")
L'output è:
s_1 :
length of s_1: 1
s_2 :
length of s_2: 0
s_2 in s_1
Qui S_1 sembra come un '' e s_2 sembra un '' o un NULL.
- 1. Perché le stringhe in C++ di solito terminano con "\ 0"?
- 2. I valori letterali stringa che terminano con un terminatore null contengono un terminatore null aggiuntivo?
- 3. concatenazione di stringhe con Null
- 4. json_encode codifica le stringhe con carattere Unicode (copyright) come null?
- 5. Le stringhe interne di Python?
- 6. Sostituisci stringhe vuote con valori None/null in DataFrame
- 7. python 3.3: struct.pack non accetta le stringhe
- 8. Perché le eccezioni AppDomain terminano invariabilmente l'applicazione?
- 9. passa le stringhe alle funzioni ctypes con Python 3.x
- 10. Sqlite: come eliminare le righe che contengono stringhe null/vuote
- 11. Concatena le stringhe in python in multiline
- 12. Le stringhe sono raggruppate in Python
- 13. Le stringhe C++ sono modificabili con le stringhe Java UNLIKE?
- 14. Impossibile aprire le risorse nelle directory che terminano con un punto esclamativo (!)
- 15. Spezzare le stringhe in Python usando regex
- 16. Python converte stringhe di stringhe in stringhe
- 17. valori alfanumerici cfspreadsheet che terminano con d
- 18. Perché gli hash SHA256 terminano con "="?
- 19. Perché aggiungere un carattere null in un array di stringhe?
- 20. Dizionario Python che associa le stringhe a un set di stringhe?
- 21. Python SWIG inizializza un puntatore su NULL
- 22. I metodi terminano con _! hai un significato speciale in Scala?
- 23. Colonna con lista di stringhe in Python
- 24. problema con lista di stringhe in Python
- 25. Non includere stringhe vuote o null con jQuery $ .param()
- 26. Riempire un array con le stringhe da un file txt
- 27. LINQ a entità e stringhe null
- 28. perché includere le righe non terminano con un punto e virgola?
- 29. strlen() restituisce il conteggio delle stringhe con il terminatore null
- 30. Come posso rimuovere tutte le parole che terminano in ":" da una stringa in Python?
Sembra lavoro domestico. Che cosa hai provato? –
Non è NULL in Java ... –
@AamirAdnan Stavo cercando di usare la stessa cosa che facciamo in Java o C++ per controllare la fine della stringa. – ayushgp