2016-12-14 133 views
0

我做的歐拉的問題與我在problem #8,並希望只是這個龐大的1000位數字複製到numberToProblem8.txt文件,然後就看它在我的劇本,但我不能找到一個從它刪除換行符的好方法。使用該代碼:刪除換行符在txt文件

hugeNumberAsStr = '' 

with open('numberToProblem8.txt') as f: 
    for line in f: 
     aSingleLine = line.strip() 
     hugeNumberAsStr.join(aSingleLine) 

print(hugeNumberAsStr) 

我使用print()來檢查它是否工作正常,它沒有。它不打印任何東西。我的代碼有什麼問題?我刪除所有帶垃圾(),然後使用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

條()刪除'\ N' – haifzhan

+0

@HaifengZhang沒有這些是'\在它的中間N'。就像:'>>> X = '1234 \ N234 \ n' >>> x.strip() 「1234 \ n234'' – David542

+0

我需要仔細閱讀這個文件?或者它在這種情況下自動關閉?我知道,當我使用open()作爲f:它會自己關閉,但在這種情況下我不確定。 – doublemc

1

你需要做hugeNumberAsStr += aSingleLine代替hugeNumberAsStr.join(..)

str.join()加入通過迭代器並返回由str加入了字符串值。它不會按照您的想法更新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. 

因此join方法確實沒有做你想做的。 級聯線應該更像:

hugeNumberAsString += aSingleLine 

甚至:

hugeNumberAsString += line.strip() 

哪個擺脫的代碼做帶多餘的線。