如何将唯一字符串插入字符串生成器,即使它是子字符串
how to insert unique string into a string builder even if it is a substring
我有下面的代码,self.asStringToCopyFromStatment
的内容如下图。我遇到的问题是,给定一行具有以下值 4.0 -99 13.07 -99
我不会将其插入字符串 self.asStringToCopyFromStatment
因为 in
运算符会假设它已经存在,因为它包含值 44.0 -99 13.07 -99
我想要这样的字符串:
4.0 -99 13.07 -99
-99 19.0 -99 13.9
0 -99 14.8 -9
例如要插入到 self.asStringToCopyFromStatment
中,因为它们是唯一的。只要特定字符串是唯一的,我就想将其添加到 self.asStringToCopyFromStatment
代码:
def appendDataRow(self):
row = "{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
if (not row in self.asStringToCopyFromStatment()):
self.inputStringToCopyFromStatement+="{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
data/contents 共 self.inputStringToCopyFromStatement:
51.0 -99 14.26 -99
-99 29.0 -99 13.21
-99 19.0 -99 13.94 #<====================HERE
-99 27.0 -99 14.11
-99 7.0 -99 13.84
-99 3.0 -99 11.25
-99 10.0 -99 11.4
-99 15.0 -99 11.15
23.0 -99 11.43 -99
44.0 -99 13.07 -99 #<====================HERE
85.0 -99 14.66 -99
86.0 -99 14.78 -99
92.0 -99 14.8 -99 #<====================HERE
91.0 -99 14.76 -99
您可以使用正则表达式来检查 row
确实位于行首:
import re
def appendDataRow(self):
row = "{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
if not re.search(rf'^{row}', self.asStringToCopyFromStatment(), re.MULTILINE):
self.inputStringToCopyFromStatement+="{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
^
结合标志 re.MULTILINE
匹配行的开头。
我有下面的代码,self.asStringToCopyFromStatment
的内容如下图。我遇到的问题是,给定一行具有以下值 4.0 -99 13.07 -99
我不会将其插入字符串 self.asStringToCopyFromStatment
因为 in
运算符会假设它已经存在,因为它包含值 44.0 -99 13.07 -99
我想要这样的字符串:
4.0 -99 13.07 -99
-99 19.0 -99 13.9
0 -99 14.8 -9
例如要插入到 self.asStringToCopyFromStatment
中,因为它们是唯一的。只要特定字符串是唯一的,我就想将其添加到 self.asStringToCopyFromStatment
代码:
def appendDataRow(self):
row = "{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
if (not row in self.asStringToCopyFromStatment()):
self.inputStringToCopyFromStatement+="{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
data/contents 共 self.inputStringToCopyFromStatement:
51.0 -99 14.26 -99
-99 29.0 -99 13.21
-99 19.0 -99 13.94 #<====================HERE
-99 27.0 -99 14.11
-99 7.0 -99 13.84
-99 3.0 -99 11.25
-99 10.0 -99 11.4
-99 15.0 -99 11.15
23.0 -99 11.43 -99
44.0 -99 13.07 -99 #<====================HERE
85.0 -99 14.66 -99
86.0 -99 14.78 -99
92.0 -99 14.8 -99 #<====================HERE
91.0 -99 14.76 -99
您可以使用正则表达式来检查 row
确实位于行首:
import re
def appendDataRow(self):
row = "{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
if not re.search(rf'^{row}', self.asStringToCopyFromStatment(), re.MULTILINE):
self.inputStringToCopyFromStatement+="{0}\t{1}\t{2}\t{3}\n".format(str(self.getAoC1()),str(self.getAoC2()),str(self.getAvgH1()),str(self.getAvgH2()))
^
结合标志 re.MULTILINE
匹配行的开头。