Python的替换函数——strip(),replace()和re.sub()

在Python中常用的三个“替换”函数是strip(),replace()和re.sub(),下面来讲讲这三个函数的用法。

一.replace()

基本用法:对象.replace(rgExp,replaceText,max)

其中,rgExp和replaceText是必须要有的,max是可选的参数,可以不加。
rgExp是指 String 对象或文字;replaceText是一个String 对象或字符串文字;max是一个数字。对于一个对象,在对象的每个rgExp都替换成replaceText,从左到右最多max次。

下面给出例子:

二.re.sub()

要用sub(),记住要import re哦!

re.sub()有5个函数,三个必选参数pattern,repl,string;两个可选参数count,flags

re.sub(pattern,repl,string,count,flags)

pattern:表示正则表达式中的模式字符串;

repl:被替换的字符串(既可以是字符串,也可以是函数);

string:要被处理的,要被替换的字符串;

count:匹配的次数

flgas:(我没找到关于这个参数的说明,有知道的读者可以在评论里附一下链接吗?)

调用sub()除了可以用re.sub(),还可以如上例子中的c一样,用re.compile()模式函数。

更多关于re.sub()函数的问题可以看这里,这个sub()函数的很多资料我都是看这里的:

http://www.crifan.com/python_re_sub_detailed_introduction

三.strip()

strip()并不是一个真正意义上的替换函数,它是用来删除一些字符的,所以我们可以把这看作是把字符串中的一些字符替换成空(不是空格,是空),有些时候,strip()用起来很方便。

对于这个函数要记住3点:

1.如果我们想要删除位于首位的其他字符,我们可以用"对象.strip(其他字符)",它将删除所有包含在“其他字符”中的字符,当然只删除位于首位的字符。如果首位有空格,就无法删除这些字符了。

如上图,因为字符串s1中,开头有空格,所以在替换字符‘0G’的时候没法替换,而s2因开头没有空格,所以能把‘0’和‘G’全部替换了。

2.当参数为空时(即括号里没东西),默认删除空白符(包括'\n', '\r',  '\t',  ' '),但是只能删除开头和结尾的,不能删除字符串中间的。如下图:

在这个例子里,开头和结尾的空格都被去掉了,但是几个英文字符串间的空格并没有被去掉,这就是strip()函数的一个缺陷,它并不能删除字符串中间的空格。

3.strip()这个函数还有两个版:lstrip()和rstrip(),分别是用来删除开头的“其他字符”的,如下图:

以上是我学习的时候的一点小总结,如果你有其他意见或者发现我有什么是漏掉的知识点欢迎在评论下说一说,谢谢!

  • 68
    点赞
  • 362
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
好的,我理解了你的需求。你可以使用Python中的Bio模块来读取和处理fasta文件,使用正则表达式来替换fasta文件中的id。具体步骤如下: 1.安装Biopython模块:在命令行中输入`pip install biopython`即可。 2.导入Bio模块:在Python脚本中导入Bio模块,代码如下: ```python from Bio import SeqIO import re ``` 3.读取fasta文件:使用Bio模块中的SeqIO.parse()函数来读取fasta文件,代码如下: ```python fasta_file = "your_fasta_file.fasta" records = SeqIO.parse(fasta_file, "fasta") ``` 其中,`your_fasta_file.fasta`为你要读取的fasta文件名,`records`为读取结果的存储变量。 4.读取txt文件中的替换规则:使用Python中的open()函数来打开txt文件,并使用readlines()方法读取其中的内容,代码如下: ```python txt_file = "your_txt_file.txt" with open(txt_file, "r") as f: lines = f.readlines() ``` 其中,`your_txt_file.txt`为你要读取的txt文件名,`lines`为读取结果的存储变量。 5.替换fasta文件中的id:使用Python中的re.sub()函数替换fasta文件中的id,代码如下: ```python for record in records: for line in lines: pattern = line.split("\t")[0] replace = line.split("\t")[1].strip() record.id = re.sub(pattern, replace, record.id) print(">" + record.id + "\n" + str(record.seq)) ``` 其中,`for record in records:`用于循环遍历fasta文件中的每一个序列,`for line in lines:`用于循环遍历txt文件中的每一行替换规则,`pattern`和`replace`分别为替换规则中的匹配模式和替换内容,`record.id = re.sub(pattern, replace, record.id)`用于替换fasta文件中的id,`print(">" + record.id + "\n" + str(record.seq))`用于输出替换后的序列。 完整代码: ```python from Bio import SeqIO import re fasta_file = "your_fasta_file.fasta" txt_file = "your_txt_file.txt" records = SeqIO.parse(fasta_file, "fasta") with open(txt_file, "r") as f: lines = f.readlines() for record in records: for line in lines: pattern = line.split("\t")[0] replace = line.split("\t")[1].strip() record.id = re.sub(pattern, replace, record.id) print(">" + record.id + "\n" + str(record.seq)) ``` 其中,`your_fasta_file.fasta`和`your_txt_file.txt`分别为你要读取的fasta文件名和txt文件名,请根据实际情况进行替换

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值