Python兼容性问题“in<string>”需要字符作为左操作数

2024-10-01 15:42:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我并不声称自己对编写Python脚本或编程一无所知,但我的任务是编写一个必须在各种Python版本上运行的程序。我写了,在2.3、2.4版本上做了测试,一切都很顺利。但是2.2版让我很恼火,我的googlefu肯定很弱,因为我没有给出答案。在

给我带来问题的代码部分:


commandnum = 0
for commandloop in arguments[0:]:
    if "java" in arguments[commandnum][0]:
        for argloop in arguments[commandnum]:
            if "Dcatalina.home" in argloop:
                instance = argloop.split("/")
            elif "-Xms" in argloop:
                xms = argloop.split("Xms")
            elif "-Xmx" in argloop:
                xmx = argloop.split("Xmx")
            elif "-XX:MaxPermSize" in argloop:
                permsize = argloop.split("=")
            elif "Dcatalina.base" in argloop:
                home = argloop.split("=")
                appdir = home[-1]+"/webapps"
                warfiles = []
                for war in os.listdir(appdir):
                    if fnmatch.fnmatch(war, '*.war'):
                        warfiles.append(war)
                thefiles = ",".join(warfiles)
        try:
            instance
        except NameError:
            instance = None
        if instance is not None:
            print "%s %s %s %s %s %s" % (instance[-2], xms[-1], xmx[-1], permsize[-1], appdir, thefiles)
    commandnum = commandnum + 1

我知道这是一个很难看的问题,可能是一个很糟糕的问题,但是我得到的错误是在使用'in'的字符串匹配中。根据我在google上收集到的信息,在python2.2中,使用'in'进行字符串匹配只能使用一个字符。2.2中匹配字符串的等效方法是什么?在

将机器升级到Python的现代版本是不可能的。在

感谢任何帮助/虐待。试着温柔一点,因为这是我1981年在TRS-80coco上用shell脚本和msbasic编写的第一个东西。在


Tags: instance字符串in版本homeforifarguments
2条回答

您总是可以使用正则表达式进行匹配。我使用2.2已经有一段时间了,所以我不记得re是否可用,或者您是否需要返回{},但我相信python站点上的文档可以追溯到足够远的地方。在

更新:看起来re可用。在

尝试使用^{},如果找不到子字符串,则返回-1。在

>>> s = "The quick brown fox"
>>> s.find("The")
0
>>> s.find("brown")
10
>>> s.find("waffles")
-1

相关问题 更多 >

    热门问题