簡體   English   中英

刪除txt文件中的換行符

[英]Removing newline characters in a txt files

我正在做歐拉問題,並在問題8出現 ,想將這個巨大的1000位數字復制到numberToProblem8.txt文件中,然后將其讀入我的腳本中,但是我找不到從其中刪除換行符的好方法它。 使用該代碼:

hugeNumberAsStr = ''

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

print(hugeNumberAsStr)

我使用print()僅檢查它是否正常工作,但沒有。 它不會打印出任何東西。 我的代碼有什么問題? 我使用strip()刪除了所有垃圾,然后使用join()將已清理的行添加到hugeNumberAsStr(需要使用字符串來連接這些行,以后再使用int()),並對所有行重復該操作。 這是帶有數字的.txt文件。

您需要執行hugeNumberAsStr += aSingleLine而不是hugeNumberAsStr.join(..)

str.join()聯接傳遞的迭代器,並返回由str聯接的字符串值。 它不會像您所想的那樣更新hugeNumberAsStr的值。 您想創建一個刪除了\\n的新字符串。 您需要將這些值存儲在新字符串中。 為此,您需要將內容附加到字符串

怎么樣呢?

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

字符串的join方法只需要一個可迭代的對象並將每個部分連接在一起。 然后,它返回結果連接字符串。 如help(str.join)中所述:

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()

這消除了執行剝離的多余代碼行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM