比较&用python操作字符串

时间:2012-06-12 13:15:00

标签: python

我在Python中编写了一个XML parser并且只有added functionality来从另一个目录中读取另一个脚本。

我有两个args,首先是我解析XML的路径。第二个是另一个XML文件中的字符串,我想与第一个路径匹配;

arg1 = \work\parser\main\tools\app\shared\xml\calculators\2012\example\calculator
path = calculators/2012/example/calculator

如何比较两个匹配的字符串以确定它们引用相同的内容,以及如何从任一字符串中删除calculator以便我可以存储该字符串&用吗?

修改

刚想了一想。在将路径转换为导入语句时,我使用正则表达式来解决已经使用year = re.findall(r"\.(\d{4})\.", path)的路径,因为Python遇到了数字问题。

我显然可以拆分字符串并使用正则表达式来匹配路径作为arg1中的模式,但这看起来很长。当然有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

结帐os.path.samefile

http://docs.python.org/library/os.path.html#os.path.samefile

os.path.dirname

http://docs.python.org/library/os.path.html#os.path.dirname

或者os.path.basename(我不确定你要保留的字符串的哪一部分)。

答案 1 :(得分:2)

这里我假设你实际上是在谈论字符串,而不是文件路径 - @ mgilson建议更好

  

如何比较两个字符串以确定它们是否同时存在   引用相同的东西

首先,您需要确定“同一件事”

的含义

乍一看,如果第二个字符串以带有反斜杠的第一个字符串结尾,那么您就是匹配。

arg1 = r'\work\parser\main\tools\app\shared\xml\calculators\2012\example\calculator'
arg2 = r'calculators/2012/example/calculator'

>>> arg1.endswith(arg2.replace('/','\\'))
True
  

而且,我怎样才能剥离计算器   任何一个字符串,所以我可以存储和&用吗?

您还需要决定是否要删除字符串中的第一个计算器,最后一个计算器或任何计算器

如果您只想删除分隔符后面的最后一个字符串,那么它只是:

>>> arg2.split('/')[-1]
'calculator'

现在要取回orignal字符串,没有最后一位:

>>> '/'.join(arg2.split('/')[:-1])
'calculators/2012/example'

答案 2 :(得分:1)

在这里,试试这个:

arg1 = "\work\parser\main\tools\app\shared\xml\calculators\2012\example\calculator"
path = "calculators/2012/example/calculator"

arg1=arg1.replace("/","\\")
path=path.replace("/","\\")
if str(arg1).endswith(str(path)) or str(path).endswith(str(arg1)):
    print "Match"

这应该适合您的需求。干杯:)