我有一个文本文件如下:
你知道吗输入.txt你知道吗
155 Phe 12xD,7xQ,5xE,5xG,4xA,4xS,2xF,2xH,2xI,2xK,1xM,1xN
151 Glu 11xD,6xA,5xE,3xF,3xG,3xM,2xI,2xS,1xH,1xK,1xL,1xP
159 Thr 15xF,6xL,6xM,5xG,5xI,5xT,4xA,4xV,3xR,1xD,1xN,1xP
在这里,我的目标是:在第3列中保持大于等于6的数字:
所以,我所做的是: 我试图通过以下脚本将1x(Anyleter)、2x(Anyleter)、3x(Anyleter)、4x(Anyleter)、5x(Anyleter)替换为nothing:
filepointer = open(filename,"r") # Reading file
text = filepointer.read()
merged = text.splitlines()
for i in merged:
print re.sub("[0-5]x[a-zA-Z]","", i.rstrip())#Replace 1x,2x,3x,4x,5x by nothing
输出:
155 Phe 2,7xQ # 2xD belong to 12xD replaced
151 Glu 1,6xA # 1xD belong to 11xD replaced
159 Thr 5,6xL,6xM # 5xF belong to 15xF replaced
更换1x、2x、3x、4x、5x是完美的,但当这些1x、2x、3x、4x、5x属于11x、12x、13x、14x、15x时也会被更换。所以我想限制这一点,只替换一个数字,而不是一个以上的数字。你知道吗
预期产量:
155 Phe 12xD,7xQ
151 Glu 11xD,6xA
159 Thr 15xf,6xL,6xM
我希望我的问题可以理解。你知道吗
我只想将1替换为零
不是属于11、21、31、41等的1
先谢谢你
另一种方法是使用函数-
reg.txt
内容如下-印刷品-
你可以用
见IDEONE demo
regex-
,?\b[0-5]x[a-zA-Z]\b
具有word boundary\b
的特性,因此数字+x+字母的前后必须是非单词字符(不是[a-zA-Z0-9_]
),并且逗号在开头是可选的(因为?
匹配前面子模式的1或0次出现)。你知道吗另外,请注意,正则表达式最好使用“原始”字符串文字来声明(请参见
r""
表示法)。这样,在使用单词边界时就不必使用双反斜杠。你知道吗相关问题 更多 >
编程相关推荐