社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python中的变量字符串替换

Jakob Nielsen • 5 年前 • 1448 次点击  

你好,我想能够替换某些变量。所需的更换订单应为

但由于某些原因,C不能被G取代。

v = "ATGC"
DNA = [v]
MRNA = []
for s in DNA:
    MRNA.append(s.replace('A', 'U').replace('T', 'A').replace('C', 'G').replace('G', 'C'))
print(MRNA)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55939
 
1448 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Heap Overflow
Reply   •   1 楼
Heap Overflow    5 年前

交换 'G' 'C' ,你 使用 'T' “T” “T”

>>> 'ATGC'.replace('A', 'U').replace('T', 'A').replace('C', 'T').replace('G', 'C').replace('T', 'G')
'UACG'

类似于两个变量的非Python交换 c g

t = c
c = g
g = t

而不是

c, g = g, c
Ayush Garg
Reply   •   2 楼
Ayush Garg    5 年前

问题是,每个人 replace 代替 的输出-意味着在运行 .replace('C', 'G') "UACC" ,下一个 代替 C 进入 G 的,意思是你得到 UAGG 而不是 UACG . 要解决这个问题,可以使用 for dictionary :

def DNA_to_RNA(s):
    mask_table = {"A": "U", "T": "A", "C": "G", "G": "C"}
    result = []
    for char in s:
        result.append(mask_table[char])
    return ''.join(result)

或者,使用列表理解:

def DNA_to_RNA(s):
    mask_table = {"A": "U", "T": "A", "C": "G", "G": "C"}
    return ''.join([mask_table[char] for char in s])
Olivier Melançon
Reply   •   3 楼
Olivier Melançon    5 年前

使用 MRNA.replace('C', 'G').replace('G', 'C') 将替换任何 'C' 'G' 立即用一个 'C'

不是多重的 str.replace 你应该使用一个翻译表 str.maketrans str.translate str.替换 增加。

def dna_to_rna(s):
    trans_table = str.maketrans('ATCG', 'UAGC')
    return s.translate(trans_table)

print(dna_to_rna('ACGTAC')) # 'UGCAUG'