簡體   English   中英

使用python比較和操作字符串

[英]Compare & manipulate strings with python

我已經用Python編寫了XML解析器 ,並且剛剛添加了從另一個目錄中讀取其他腳本的功能

我有兩個參數,第一個是解析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)將年份從路徑中移出,原因是在將路徑轉換為進口聲明。

我顯然可以拆分字符串並使用正則表達式將路徑匹配為arg1中的模式,但這似乎還有很長的路要走。 當然有更好的方法了嗎?

簽出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 (我不確定要保留字符串的哪一部分)。

在這里,我假設您實際上是在談論字符串,而不是文件路徑-@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'

現在返回原始字符串,沒有最后一點:

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

在這里,嘗試一下:

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"

那應該滿足您的需求。 干杯:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM