如何使用python忽略一行的某些部分?

时间:2018-03-09 13:54:41

标签: python

  

S1C(SCC1)C1 = COC2C(C {OC} C3C(OC = C3)C2)C1 = O

在上面的字符串中,我希望程序忽略 {OC} 或技术上忽略这些花括号之间的任何内容,但在字符串的其余部分正常工作。我有一个数千个这样的字符串的文件。有些字符串有多个花括号。应该怎么做?

目前我使用python 2.5版本。

3 个答案:

答案 0 :(得分:3)

这可能会有所帮助。使用正则表达式。

import re
s = "S1C(SCC1)C1=COC2C(C{OC}C3C(OC=C3)C2)C1=O"
print re.sub("\{(.*?)\}", " ", s)   #Replacing curly brackets and its content by space. 

<强>输出:

S1C(SCC1)C1=COC2C(C C3C(OC=C3)C2)C1=O

答案 1 :(得分:1)

您可以使用字符串切片。

注意 - 只有在字符串

中有一个这样的括号时,这才能正常工作
str = "S1C(SCC1)C1=COC2C(C{OC}C3C(OC=C3)C2)C1=O"

startofbracket = str.find("{")
endofbracket = str.find("}")

print str[:startofbracket]+str[endofbracket+1:]

答案 2 :(得分:0)

您可以遍历字符串并跟踪不在括号中的字符。以下代码假定没有&#39; {&#39;字符串中的字符

string = "S1C(SCC1)C1=COC2C(C{OC}C3C(OC=C3)C2)C1=O"
output = ""
brace_found = False
for i in range(len(string)):
    if brace_found:
        if string[i] == "}":
            brace_found = False
    else:
       if string[i] != "{":
           output+=string[i]
       else:
           brace_found = True
print output
# S1C(SCC1)C1=COC2C(CC3C(OC=C3)C2)C1=O