簡體   English   中英

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

[英]What does .readline() return in Python?

編輯整個帖子,以便更清楚地解決問題:

s = "GATATATGCATATACTT"
t = "ATAT"

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

因此,上面程序的目的是掃描DNA的長線和DNA的短線(t),以找出t在s上的哪個位置匹配。 上面代碼的輸出是:

2 4 10#這基本上是與字符串t匹配的字符串s的索引號。 但從上面的代碼中可以看出,i + 1給出基於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更改為:

t = f.readline().strip()

然后程序輸出與第一個示例相同的結果。

所以我希望這可以使事情變得更清楚。 因此,我的問題是,如果readline()返回一個字符串,為什么示例2中的程序不能以與第一個示例相同的方式工作?

您的問題陳述是錯誤的,第一個示例中的st不可能擁有比第二個示例更多的內容(並且len(s) > 0len(t) > 0 )。

基本上有:

s = f.readline()

s將包含諸如"foobar \\n"類的字符串,因此len(s)將為9

然后加上:

s = f.readline().strip()

使用相同的字符串,則len(s)將為6因為剝離的字符串是"foobar"

因此,如果行中充滿s = " \\n"s = " \\n"空格,則s.strip()將為空字符串"" ,其中len(s) == 0

那樣的話,您的循環就不會啟動,也不會打印任何內容。

在我能想到的幾乎所有其他情況下,應該提高執行力,而不是無聲退出。

但老實說,您的代碼很糟糕,因為沒有人能讀懂您想做什么(包括六個月內的您)。

暫無
暫無

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

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