我试图解析一个特定的文本文件。我试图打开文本文件,逐行询问是否存在特定的字符串(在下面的示例中,它是在大括号中出现数字01),然后向前向后操作特定字符串,或者保持不变。这是一个例子,其中一行被任意命名为“go”。。。(完整文件中的其他行格式类似,但有{01}, {00}
等。。。在
go = 'USC_45774-1111-0 <hkxhk> {10} ; 78'
go = go.replace(go[22:24],go[23:21:-1])
>>> go
'USC_45774-1111-0 <khxkh> {10} ; 78'
我试图操作第一个"hk" (go[22:24])
,方法是用相同的字母替换它,但是向后(go[23:21:-1)
,我想看到的是khxhk
,但是正如你所看到的,我得到的结果是,这两个字母都向后转为khxkh
。在
我也有一个问题,即对每一行执行特定的if语句。许多没有{01}
的行被操作得好像它们是。。。。在
我错过了一些简单的事情吗?在
可以使用
replace()
的count参数:对于第二个问题,您需要将条件更改为:
^{pr2}$string
replace
方法不按位置替换字符,而是用字符替换它们。在所以在你的第一个例子中,你要用“kh”代替“hk”。它不“知道”你只想替换其中的一个,它只知道你想用“kh”替换“hk”,所以它会替换所有的出现。在
您可以使用
^{pr2}$count
参数来替换,以指定您只想替换第一个匹配项:但是请注意,这将始终替换第一个出现,而不一定是字符串中指定位置的出现。在这种情况下,我想这正是您想要的,但它可能无法直接用于其他类似的任务。(也就是说,无法按原样使用此方法来替换第二次或第三次出现;只能替换第一次、前两次或前三次,等等。要替换第二次或第三次出现,您需要做更多的工作。)
至于你问题的第二部分,你误解了
if "{01}" or "{-1}" in line
的意思。通俗地说,这意味着if "{01}" or if "{-1}" in line
。{e>{e>始终是true,因为条件“^.01”不是真的。你想要的是if "{01}" in line or "{-1}" in line"
。在我不知道Python是怎么回事,但你的问题是每天至少在这里发布几次。在
这不像你想的那样。它会问:“这是真的吗?”?因为它是一个非零长度的字符串。因为
or
短路,所以不测试其余条件,因为第一个参数为真。因此,始终执行if
语句的主体。在换句话说,Python的计算结果就像您编写了以下代码:
^{pr2}$你想要这样的东西:
或者如果你有很多类似的情况:
相关问题 更多 >
编程相关推荐