如何在python中解析两个字符串,并跟踪它们的坐标?



我想同时解析python中的一对字符串,并跟踪它们的坐标(跳过"X"时(。如果我能更好地澄清,请告诉我:

有两个字符串,string1string2,它们随机包含字符X。我正在共同解析和分析这些字符串中的字符(长度相同(:

string1 = "RANDXMSTRINXHERE"
string2 = "XLSORAXDOXSTRING"

还有一些变量初始化为整数,表示这些字符串的"起始坐标"(当然在不同的坐标系中(:

string1_start = 5
string2_start = 12

应忽略 X 字符。我想根据这两个字符串"跟踪 X 的位置",其规则是,如果string1包含不X的字符,则迭代变量string1_start+=1。同时,当string2包含未X的容器时,则迭代变量string2_start+=1。这很简单:

string1_start = 5    ## starting coordinate for string1
string2_start = 12   ## starting coordinate for string2
string1 = "RANDXMSTRINXHERE"
string2 = "XLSORAXDOXSTRING"
for i, j in zip(string1, string2):
if i != 'X' and j != 'X':
string1_start += 1
string2_start += 1
elif i != 'X' and j == 'X':
string1_start += 1
elif i == 'X' and j != 'X':
string2_start += 1

鉴于这种逻辑,我正在努力弄清楚当string1位于坐标 9 或 17 时如何"记录"string2的坐标。也就是说,一旦string1_start == 9,缓存string2_start的结果,一旦string1_start == 17,缓存string2_start的结果。

例如,这将不起作用:

coord9 = 0
coord17 = 0
for i, j in zip(string1, string2):
if i != 'X' and j != 'X':
string1_start += 1
string2_start += 1
if start1_start == 9:
coord9 = string2_start
if start1_start == 17:
coord17 = string2_start    
elif i != 'X' and j == 'X':
string1_start += 1
if start1_start == 9:
coord9 = string2_start
if start1_start == 17:
coord17 = string2_start  
elif i == 'X' and j != 'X':
string2_start += 1
if start1_start == 9:
coord9 = string2_start
if start1_start == 17:
coord17 = string2_start  

我如何将该逻辑纳入上述内容?我应该使用不同的数据结构跟踪坐标吗?

您可以通过添加i != 'X'来简化索引增量逻辑,这些的计算结果将TrueFalse添加的将充当10

string1_idx = 5    ## starting coordinate for string1
string2_idx = 12   ## starting coordinate for string2
string1 = "RANDXMSTRINXHERE"
string2 = "XLSORAXDOXSTRING"
coord9 = cord17 = ''
for i, j in zip(string1, string2):
string1_idx += i != 'X'
string2_idx += j != 'X'
if string1_idx == 9:
cord9 = string2_idx
if string2_idx == 17:
cord17 = string1_idx
print(cord9, cord17)  # -> 16, 11

最新更新