我在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中的模式,但这看起来很长。当然有更好的方法吗?
答案 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"
这应该适合您的需求。干杯:)