2016-12-14 14 views
0

私はオイラー問題を抱えており、problem #8にあり、この1000桁の数字をnumberToProblem8.txtファイルにコピーしてスクリプトに読み込むだけですそこから改行を削除する良い方法を見つけてください。そのコードでは:txtファイル内の改行文字を削除する

私はそれがうまく動作するかどうかを確認するためにprint()を使用します。それは何も印刷しません。私のコードに何が問題なのですか?私はstrip()ですべてのごみを取り除き、join()を使用して、クリーンな行をhugeNumberAsStrに追加します(これらの行に結合する文字列が必要です。後でint()を使用します)。 Here is the .txt file with a number in it.

答えて

1

にコンテンツを追加必要なもののようなものについて:でも

hugeNumberAsStr = open('numberToProblem8.txt').read() 
hugeNumberAsStr = hugeNumberAsStr.strip().replace('\n', '') 

または:

hugeNumberAsStr = ''.join([d for d in hugeNumberAsStr if d.isdigit()]) 

私はから番号を取得するには、以下にそれを簡素化することができましたそのファイル:

>>> int(open('numberToProblem8.txt').read().replace('\n','')) 
731671765313306249192251196744265747423553491949349698352031277450632623957831801698480186947885184385861560789112949495459501737958331952853208805511125406987471585238630507156932909632952274430435576689664895044524452316173185640309871112172238311362229893423380308135336276614282806444486645238749303589072962904915604407723907138105158593079608667017242712188399879790879227492190169972088809377665727333001053367881220235421809751254540594752243525849077116705560136048395864467063244157221553975369781797784617406495514929086256932197846862248283972241375657056057490261407972968652414535100474821663704844031998900088952434506585412275886668811642717147992444292823086346567481391912316282458617866458359124566529476545682848912883142607690042242190226710556263211111093705442175069416589604080719840385096245544 
+0

strip()は '\ n'を削除します – haifzhan

+0

@HaifengZhangいいえこれは、その途中で' \ n'です。 「>>> x = '1234 \ n234 \ n' >>> x.strip() 「1234 \ n234」 – David542

+0

このファイルを閉じる必要がありますか?それとも、この場合には閉じますか? open()をfとして使用すると、それは閉じますが、この場合は確信が持てません。 – doublemc

1

代わりhugeNumberAsStr.join(..)

str.join()渡されたイテレータに参加し、strによって接合された文字列値を返すのhugeNumberAsStr += aSingleLineを行う必要があります。あなたが考えるように、hugeNumberAsStrの値は更新されません。 \nが削除された新しい文字列を作成したいとします。これらの値を新しい文字列に格納する必要があります。そのためにあなたは、文字列

+0

join()メソッドがうまくいかない理由を詳しく説明できますか? – doublemc

+0

@doublemc '+ ='前のパートに文字列を追加します。 'join'は、リストや他の同様のオブジェクトの既存の文字列要素を結合するために使用されます。 – David542

+0

@doublemc:編集を確認してください。疑いがある場合はお気軽にお問い合わせください。私はその文書を一度読むことを提案する。あなたはより多くの情報を得るでしょう –

1

文字列の結合メソッドは、単純に反復可能オブジェクトを取り出し、それぞれを連結します一緒に部分。次に、結果として連結された文字列を返します。ヘルプ(str.join)で述べたように:

は(...) S.join(反復可能)参加 - > STR

Return a string which is the concatenation of the strings in the 
iterable. The separator between elements is S. 

したがって参加方法は本当にあなたがやりたいことはありません。 連結ラインは、よりようにする必要があります。でも、

hugeNumberAsString += aSingleLine 

または:ストリップをやってコードの余分な行を取り除く

hugeNumberAsString += line.strip() 

関連する問題