.readline()在Python中返回什么?

时间:2017-01-26 15:08:33

标签: python readline

编辑整个帖子,以便更清楚问题:

s = "GATATATGCATATACTT"
t = "ATAT"

for i in range(len(s)):
    if t == s[i:i+len(t)]:
        print i+1,

因此,上述程序的目的是用DNA(t)的短线扫描长链DNA,以便找到s匹配的位置。上面代码的输出是:

2 4 10#这基本上是字符串t匹配的字符串s的索引号。但是从上面的代码中可以看出,给出基于1的编号输出是i + 1。

我遇到的问题是,当我尝试更改代码时,为了使它通过文件接收s和t的值,readline()函数对我来说不起作用。 motif.txt文件包含两个DNA串,每行一个。

with open('txt/motif.txt', 'r') as f:

    s = f.readline()
    t = f.readline()

    for i in range(len(s)):
        if t == s[i:i+len(t)]:
            print i+1,

因此,这段代码根本不会输出任何内容。但是当我改变为:

t = f.readline().strip()

然后程序输出与第一个例子相同的结果。

所以我希望这会让事情更清楚。因此,我的问题是,如果readline()返回一个字符串,为什么示例2中的程序与第一个示例中的方式不同?

1 个答案:

答案 0 :(得分:0)

您的问题陈述错误,第一个示例中的"equations": [ "$w = F.s\cos\theta$" ] s无法获得比第二个更多的内容(以及tlen(s) > 0)。< / p>

基本上用:

len(t) > 0

然后s = f.readline() 将包含类似s的字符串,因此"foobar \n"将为len(s)

然后用:

9

使用相同的字符串,s = f.readline().strip() 将为len(s),因为已删除的字符串为6

因此,如果您的行中包含"foobar"之类的空格,s = " \n"将是空字符s.strip()""

然后在这种情况下你的循环将无法启动并且永远不会打印任何东西。

在我能想到的几乎所有其他情况中,你应该得到一个提升,而不是沉默的退出。

但说实话,你的代码很糟糕,因为没有人能够通过阅读它来理解你想做什么(包括你在六个月内)。