String 如何使用Julia替换字符串中的几个字符

String 如何使用Julia替换字符串中的几个字符,string,replace,julia,String,Replace,Julia,我基本上是想解决这个问题: 我想用他们的赞美词T,G,C,A替换所有出现的A,C,G,T。。换句话说,所有A将替换为T,所有C将替换为G等 我以前曾使用replace()函数将所有出现的“T”替换为“U”,并希望replace函数将一个字符列表替换为另一个字符列表,但我无法使其工作,因此它可能没有该功能 我知道我可以使用BioJulia软件包轻松解决这一问题,并已使用以下方法解决了这一问题: # creating complementary strand of DNA # reverse the

我基本上是想解决这个问题:

我想用他们的赞美词T,G,C,A替换所有出现的A,C,G,T。。换句话说,所有A将替换为T,所有C将替换为G等

我以前曾使用
replace()
函数将所有出现的“T”替换为“U”,并希望replace函数将一个字符列表替换为另一个字符列表,但我无法使其工作,因此它可能没有该功能

我知道我可以使用BioJulia软件包轻松解决这一问题,并已使用以下方法解决了这一问题:

# creating complementary strand of DNA
# reverse the string
# find the complementary nucleotide
using Bio.Seq
s = dna"AAAACCCGGT"

t = reverse(complement(s))

println("$t")
但我不想依赖这个包裹

这是我目前掌握的代码,如果有人能引导我朝着正确的方向走,那就太好了

# creating complementary strand of DNA
# reverse the string
# find the complementary nucleotide

s = open("nt.txt") # open file containing sequence

t = reverse(s) # reverse the sequence

final = replace(t, r'[ACGT]', '[TGCA]') # this is probably incorrect
# replace characters ACGT with TGCA

println("$final")

似乎
replace
还没有像Bash中的
tr
那样进行翻译。因此,这里有两种方法使用字典映射(BioJulia包似乎也使用字典):

然后,如果
str=“AAAACCCGGT”
,您可以像这样使用
join

julia> join([compliments[c] for c in str])
"TTTTGGGCCA"
另一种方法是使用函数和
map

function translate(c)
    compliments[c]
end
然后:

字符串在Julia中是可编辑的对象;每种方法都会依次读取一个字符,
c
,然后将其传递给字典以获取补充字符。将从这些互补字符生成一个新字符串


Julia的字符串也是不可变的:您不能在原地交换字符,而是需要构建一个新字符串。

当我提供str=“AAACCCGGT”时,这非常有效,但如果我尝试打开一个文件并以这种方式获取字符串,则会出现“在dict的getindex中找不到”错误。另外,你能详细说明一下底部的函数是如何解决我的问题的吗?索引词典如何改变我的字符串?我目前正在阅读《掌握茱莉亚》,但我在《掌握茱莉亚》中只读了几章,昨天刚学了茱莉亚,所以虽然我理解了一点,但我仍然对其中的一些机制很不熟悉。要纠正错误,你可能正在阅读文件中的新行。字典没有映射这些内容,因此会出现错误。您可以尝试
map(translate,readchomp(s))
map(translate,str)
将基于str返回一个新的翻译字符串,类似地
replace(str,match,replacement)
也将返回一个新字符串,即:
x=“test”;y=替换(x,'e,'e');x、 y
返回
(“测试”、“测试”)
。他们不会更新您的原始字符串@Ismaelvengascastelló:我认为没有(方便的)方法来修改Julia的字符串,因为它们是不可变的,这对吗?我自己也在了解朱莉娅,很想知道我是否错过了什么。@ajcr我不这么认为,你可能想看看,并找到一个惯用的方法来做到这一点D
function translate(c)
    compliments[c]
end
julia> map(translate, str)
"TTTTGGGCCA"