string.join не делает то, что вы думаете. join используется для объединения списка слов в одну строку с указанным разделителем. То есть:
>>> ",".join(('foo', 'bar', 'baz'))
'foo,bar,baz'
Размещенный вами фрагмент кода попытается вставить myString между каждым символом в строке переменной. Вы можете видеть, как это быстро станет большим :-). Вы пытаетесь прочитать весь файл в одну строку, myString? Если это так, то способ объединения строк выглядит следующим образом:
myString = myString + line
Пока я здесь ... так как вы изучаете Python, вот несколько других предложений.
Есть более простые способы прочитать весь файл в переменную. Например:
fileIN = open("testdata.txt", "r")
myString = fileIN.read()
(Это не будет иметь точное поведение вашего существующего кода strip (), но на самом деле может делать то, что вы хотите.)
Кроме того, я бы никогда не рекомендовал практический код Python, использующий рекурсию для итерации по строке. Ваш код сделает вызов функции (и запись в стеке) для каждого символа в строке. Также я не уверен, что Python будет очень умным во всех случаях использования bigString [1:]: он может создать в памяти вторую строку, которая является копией оригинала без первого символа. Самый простой способ обработать каждый символ в строке:
for mychar in bigString:
... do your stuff ...
Наконец, вы используете список с именем «флажок», чтобы увидеть, видели ли вы когда-либо определенный символ раньше. Но проверка членства в списках («если myChar в проверен») идет медленно. В Python лучше использовать словарь:
checked = {}
...
if not checked.has_key(myChar):
checked[myChar] = True
...
Это упражнение, которое вы выполняете, является отличным способом выучить несколько идиом Python.