2012-03-31 10 views
1

Gibt es ein Objekt, das wie array.array funktioniert, aber dennoch Strings (oder Zeichen-Arrays) als Datentyp verarbeiten kann?python array.array mit Zeichenfolgen als Datentyp

Es sollte in der Lage sein, das Zeichenfolgenarray in binäre und wieder zurück zu konvertieren, vorzugsweise mit nullterminierten Strings, jedoch wären Zeichenfolgen fester Länge akzeptabel.

>>> my_array = stringarray(['foo', 'bar']) 
>>> my_array.tostring() 
'foo\0bar\0' 
>>> re_read = stringarray('foo\0bar\0') 
>>> re_read[:] 
['foo', 'bar'] 

Ich werde es mit Arrays verwenden, die ein paar Millionen Strings enthalten.

+1

So wird Ihre Zeichenfolgen enthalten nie ' '\ 0''? Was hast du mit den zusammenhängenden String-Chunks vor? –

Antwort

4

einfach eine Standard-Python-Liste verwenden:

def list_to_string(lst): 
    return "\0".join(l) + "\0" 

def string_to_list(s): 
    return s.split("\0")[:-1] 
+0

Ich muss \ 0 behalten, um leere Zeichenfolgen anzugeben. s.split ('\ 0') [: - 1]? – Gladius

+0

Ja, so würde ich es beheben. –

+0

@Gladius: Ich habe die Antwort bearbeitet, um zu verwenden, was Sie vorgeschlagen haben. Ich habe das nicht sofort benutzt, weil es das letzte Element fallen lässt, selbst wenn "s" nicht mit einem "\ 0" endet. –

Verwandte Themen