我正在进行Euler问题并且在problem #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())并重复所有行。 Here is the .txt file with a number in it.
答案 0 :(得分:1)
您需要hugeNumberAsStr += aSingleLine
代替hugeNumberAsStr.join(..)
str.join()
加入传递的迭代器并返回str
加入的字符串值。它不会像您想象的那样更新hugeNumberAsStr
的值。您想要创建一个已移除\n
的新字符串。您需要将这些值存储在新字符串中。为此,您需要将内容附加到字符串
答案 1 :(得分: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
答案 2 :(得分:1)
字符串的join方法只需要一个可迭代的对象并将每个部分连接在一起。然后它返回结果的连接字符串。如帮助(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()
这摆脱了执行条带的额外代码行。