002. RNA(Transcribing DNA into RNA )+字串轉換

更新於 發佈於 閱讀時間約 6 分鐘

題目連結

給一段DNA序列,要轉成RNA序列

RNA vs DNA

RNA vs DNA


DNA在轉錄(transcription)成RNA時,ATCG會被抄寫成AUCG

抄寫的過程仰賴:RNA聚合酶(RNA polymerase),他是把DNA拷貝成RNA的抄寫機,只是抄寫機的鍵盤上沒有"T"這個按鍵,於是拿"U"來代替。

不過要注意:DNA是雙股螺旋;RNA是單股的沒有固定形狀、比較脆弱

雖然跟題目無關就是了


程式作法有非常多種,可以直接迭代一次轉換

s = "GATGGAACTTGACTACGTAAATT"

for base in s:
match base:
case 'T':
print('U', end='')
case _:
print(base, end='')

# for base in s:
# print('U' if base == 'T' else base, end='')


或者,使用正規表達式

import re

s = "GATGGAACTTGACTACGTAAATT"
rna = re.sub('T', 'U', s) # 替換(substitute)

print(rna)


或者,用字串取代

s = "GATGGAACTTGACTACGTAAATT"

# print(s.replace('T', 'U'))

def transcribe_dna_to_rna(dna):
return dna.replace('T', 'U')

print(transcribe_dna_to_rna(s))

str.replace() 一次只能處理一種字串/字元


或者,使用str.translate() 則可處理多種字串/字元

建立轉換表

s = "GATGGAACTTGACTACGTAAATT"

trans_table = str.maketrans('T', 'U')
rna = s.translate(trans_table)

print(rna)



---


str.translate() 的幾種用法:

str.maketrans(參數一, [[參數二], 參數三])

至少要填入一個參數,至於參數二參數三則是可選的


1:只傳入一個參數:使用字典

傳入一個字典,但此字典的key只能是字元(字串的長度只能是1)

table = str.maketrans({
'a': 'alpha',
'b': 'bet',
'c': '', # 代表刪除'c'
'!': '!',
# '!!': '!!!' # 這行會出錯,key只能是字元
})

s = "abc!"

print(s.translate(table)) # alphabet!
print("I b U!!".translate(table)) # I bet U!!


2:傳入兩個參數:兩個等長字串

傳入字串的話,就是一個字元對另一個字元的取代

限制比較多,能做的轉換比方法一還少

傳入的兩個字串(參數一、參數二)必須等長

  • 參數一:要被替換的原字元
  • 參數二:要換成的新字元
table = str.maketrans(',.!', ',。!') # 字符全形轉換

s = "今天,天氣真好.啊!忽然下雨了..."

print(s.translate(table)) # 今天,天氣真好。啊!忽然下雨了。。。


3:傳入三個參數:方法二+刪除字元

  • 參數一:要被替換的原字元
  • 參數二:要換成的新字元
  • 參數三:要刪除的字元


只刪除特定字元

table = str.maketrans('', '', ',.!') # 不執行取代,而是把所有標點符號去除

s = "今天,天氣真好.啊!忽然下雨了..."

print(s.translate(table)) # 今天天氣真好啊忽然下雨了


取代並刪除字元

table = str.maketrans('真', '不', ',.!') # 天氣:真好 => 不好

s = "今天,天氣真好.啊!忽然下雨了..."

print(s.translate(table)) # 今天天氣不好啊忽然下雨了


取代並刪除字元(可以觀察到,是先做完取代,然後再刪除字元)

table = str.maketrans(',.!', ',。!','.') # 字符全形轉換,最後再刪除句號

s = "今天,天氣真好.啊!忽然下雨了..."

print(s.translate(table)) # 今天,天氣真好啊!忽然下雨了





留言
avatar-img
留言分享你的想法!
avatar-img
生物資訊實驗室
0會員
17內容數
這裡存放著滿滿的大平台!Rosalind 生物資訊解題平台的學習過程! 📢 適合對象: ✅ 想學習生物資訊的程式新手 ✅ 對Python程式有基礎,想挑戰 Rosalind 題目的解題者 ✅ 對DNA、蛋白質、基因組數據分析有興趣的人
生物資訊實驗室的其他內容
2025/04/16
題目連結 密碼子為三個鹼基一組的序列 就像把一段RNA序列拆包、逐個decode成對應的蛋白質字母 輸入 AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA 輸出 MAMAPRTEINSTRING 首先就是要建立出密碼
Thumbnail
2025/04/16
題目連結 密碼子為三個鹼基一組的序列 就像把一段RNA序列拆包、逐個decode成對應的蛋白質字母 輸入 AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA 輸出 MAMAPRTEINSTRING 首先就是要建立出密碼
Thumbnail
2025/04/12
題目連結 孟德爾第一定律(Mendel's First Law),是遺傳學中的分離律 題目輸入 2 2 2 輸出 0.78333 蛤??? 當三個2擺在一起 怎麼計算也不會是這個數字吧? 不可能,絕對不可能! 這麼醜的數字0.78333到底是怎麼湊來的? 幾
Thumbnail
2025/04/12
題目連結 孟德爾第一定律(Mendel's First Law),是遺傳學中的分離律 題目輸入 2 2 2 輸出 0.78333 蛤??? 當三個2擺在一起 怎麼計算也不會是這個數字吧? 不可能,絕對不可能! 這麼醜的數字0.78333到底是怎麼湊來的? 幾
Thumbnail
2025/04/06
題目連結 今天文章比較長,要冷靜忍耐一下 (文末有提到zip()與asterisk星號用法,篇幅hen長) 輸入兩基因序列,比對這兩序列中有幾個不一樣的地方。 計算兩字串不同字符的個數,這個就稱為漢明距離 (Hamming distance) 11110000 01110001
Thumbnail
2025/04/06
題目連結 今天文章比較長,要冷靜忍耐一下 (文末有提到zip()與asterisk星號用法,篇幅hen長) 輸入兩基因序列,比對這兩序列中有幾個不一樣的地方。 計算兩字串不同字符的個數,這個就稱為漢明距離 (Hamming distance) 11110000 01110001
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
Lua 開檔寫檔的運用 io.output()...
Thumbnail
User Input & Tables 的使用
Thumbnail
User Input & Tables 的使用
Thumbnail
註解 & Print & 變數型態
Thumbnail
註解 & Print & 變數型態
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News