Python len()混淆

时间:2017-11-22 17:10:02

标签: python python-3.x string-length

我不确定我在这里做错了什么,花了一整天的谷歌搜索和阅读蟒蛇书......

我有以下功能:

def extract(inNo, inputFile2, outputFile):
    ifile = open(inputFile2, 'r')
    ofile = open(outputFile, 'w')
    lines = ifile.readlines()
    for line in lines:
        print(str(len(line)))
        if str(len(line)) == str(inNo):
            ofile.write(line)

我正在尝试理解len(),使用它时我似乎得到了奇怪的结果。 我的输入文件如下:

1
22
333
4444
55555
666666
7777777
88888888

现在如果我使用'7'作为inNo变量,我得到的输出(即print)是:

2
3
4
5
6
7
8
8

,输出文件变为:

666666

我确信从签入python.exe长度计数从1开始,即:

len('123') 

会得到

的结果
3

我对len()的理解是错误的,还是我编码错了?

基本上,这个功能的作用是什么;它将输入,输出和字符长度作为参数。它们来自不同的函数,第二个函数用参数调用它。

此函数从输入文件中读取行。 对于每一行,它获取字符长度并将其与输入编号进行比较。 如果它们相等,则应将该行写入输出文件。我假设我没有“其他:”它应该进行迭代。 print()函数允许我确切地看到它计算的长度。

当我尝试向len()添加' - 1'或'+ 1',即(len(line)+ 1)时,它会导致更奇怪的事情发生。

1 个答案:

答案 0 :(得分:4)

len()也会考虑新的换行符\n,这就是为什么除了最后一行之外,你在每一行都会得到一个。