2016-11-19 4 views
1
x = open("C:\\Users\\User\\Documents\\original.txt", 'r') 

mylist = x.read() 
length = len(mylist) 
for y in range(length): 
    for q in range(length-1): 
     if mylist[q] > mylist[q+1]: 
      mylist[q], mylist[q+1] = mylist[q+1], mylist[q] 
      print (mylist) 

Traceback (jüngste Aufforderung zuletzt):Mit Blasensortierung in einer TXT-Datei

File "<pyshell#12>", line 4, in <module> 

mylist[q], mylist[q+1] = mylist[q+1], mylist[q] 

TypeError: 'str' object does not support item assignment 

Kann jemand diesen Fehler bitte, Dank erklären.

+0

Die Zahlen, die Sie aus Ihrer Textdatei eingelesen haben, sind wahrscheinlich vom Typ 'str', nicht' int' oder 'float'. – blacksite

+2

'x.read()' erzeugt keine Liste. Es liest den gesamten Inhalt der Datei in einer einzigen Zeichenfolge. Sie wollen wahrscheinlich 'x.readlines()'. – Blckknght

+0

'mylist' ist keine' liste', es ist eine 'string', vielleicht hast du vergessen es zu" teilen ". – Arman

Antwort

0

Was Sie versuchen zu tun ist äquivalent zu:

string = "Some string" 
string[0], string[1], = string[1], string[0] 

heißt Sie versuchen, die Zeichen innerhalb der Zeichenfolge zu ändern.

Was Sie tun möchten, ist entweder
a) Teilen Sie den Inhalt in eine Liste von Wörtern mit mylist.split().
b) Verwenden Sie x.readlines(), um die Datei eine Liste von Zeilen zu lesen und diese zu sortieren.
c) Teilen Sie die gesamte Datei in eine Liste von Zeichen mit [x for x in mylist] und die Zeichen sortieren,

Dann ''.join(list_of_whatever) verwenden, um die Liste in eine Zeichenkette zu drehen.

Verwandte Themen