我试图在文本文件中找到一些单词并替换它们。 我把要替换的单词存储在变量中。例如:
COR00g1.1 SolycCB00g000010
因此,在文本中,我需要找到“COR00g1.1
”单词并替换为“SolycCB00g000010
”。问题是“COR00g1.1”实际上是在匹配另一个单词。
示例:
输入:
^{pr2}$输出:
ch00 assembler exon 1146259 1146582 . - . ID=exon2;Parent=SolycCB00g000010.2,SolycCB00g000010.3
ch00 assembler transcript 4197578 4197801 . + . Parent=SolycCB00g000010.1;ID=SolycCB00g000010.1.1;official=no
可以看到,第二行也被替换为新的ID,而它不应该被替换
这是我使用的代码:
with open(fname, "r") as dataf:
reader = csv.reader(dataf, delimiter="\t")
for line in reader:
line[8] = re.sub(search, replace, line[8])
您需要的是一个已定义的子字符串,而不是模式,所以首先不要使用正则表达式。在
简单的子字符串替换如下所示:
如果必须使用正则表达式,则需要转义
^{pr2}$.
,以便将其视为文字字符:例如编辑:要处理此评论:
并不意味着你需要使用正则表达式,它只是意味着你需要使用变量。例如:
在需要正则表达式的地方传递一个文本字符串,然后咀嚼该字符串以希望能够转义所有特殊的正则表达式字符,这是所有世界中最糟糕的。在
如果只需要简单的子字符串匹配,那么使用正则表达式没有任何好处,而且增加了显著的复杂性。套用众所周知的Jamie Zawinski quote,您创建了一个没有任何好处的额外问题。在
相关问题 更多 >
编程相关推荐