我想同时解析python中的一对字符串,并跟踪它们的坐标(跳过"X"
时(。如果我能更好地澄清,请告诉我:
有两个字符串,string1
和string2
,它们随机包含字符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'
来简化索引增量逻辑,这些的计算结果将True
或False
添加的将充当1
或0
。
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