如何将其分为两个字符串?

时间:2012-10-09 22:24:14

标签: python python-2.7 pyramid

我是Python的新手,我不确定应该寻找什么,但我向你保证我已经完成了我的研究,并且仍然想出了一个相当丑陋的20行长的代码块来解决这个问题。

我正在使用基于Pyramid框架的应用程序处理遍历URL。

现在,URL可以是:(url = None)

  1. url =""
  2. url =" /"
  3. url =" / block_1"
  4. url =" / block_1 /"
  5. url =" / block_1 / block_2"
  6. url =" / block_1 / block_2 /"
  7. 网址不包含任何内容。在这种情况下,我希望我的函数返回False,None或空列表或元组。 (无关紧要。)(匹配选项0或1)

    Block_1:这是一个单词,一个到Z字符串。不能也不应该包含任何特殊字符。事实上,作为block_1获取的内容,应该在字典(或列表)中,如果没有找到,则应该引发并返回错误。如果block_1不存在或未找到,则如上所述,该函数应返回False,None或空列表或元组。 (匹配选项2和3)

    Block_2:Block_2可以是任何东西。为简单起见,它可以包含任何语言的任何字符以及特殊字符,例如:()[]。如果我错了,请原谅我,但我认为我想要的基本上是为了匹配[\pL\pN].*,但有一个例外:它的最后一个字符不能是斜杠:既不是"\"也不是{{} 1}}。最好,我希望它是"/"(我特别定义如上所述:()和[])。如果没有给出block_2,则它应该具有值None,如果它不匹配,则它应该返回False。 (匹配上面列出的最后两个选项)

    我的代码开头,相当原始,我道歉:

    a to Z (including all languages' alphabets and their accented characters) along with some other characters from a list

    对不起,如果我的代码很糟糕而且过于复杂。我只想要一种更优雅,更好的方式来做这件事。

    那我怎么办呢?我该怎么做才能摆脱这些卡住的代码?

    谢谢。

2 个答案:

答案 0 :(得分:4)

绝对应该使用

split('/'),这应该可以帮助您解析URL。

如果这还不够,则应使用urlparse来解析

urlparse.urlparse(path)
In [31]: url = 'http://stackoverflow.com/questions/12809298/how-can-i-separate-this-into-two-strings/12809315#12809315'

In [32]: urlparse.urlparse(url)
Out[32]: ParseResult(scheme='http', netloc='stackoverflow.com', path='/questions/12809298/how-can-i-separate-this-into-two-strings/12809315', params='', query='', fragment='12809315')

In [33]: a = urlparse.urlparse(url)

In [34]: a.path
Out[34]: '/questions/12809298/how-can-i-separate-this-into-two-strings/12809315'

In [35]: a.path.split('/')
Out[35]: 
['',
 'questions',
 '12809298',
 'how-can-i-separate-this-into-two-strings',
 '12809315']

答案 1 :(得分:2)

我要尝试的第一件事是.split() string function

>>> url = "/block_1/block_2"
>>> url.split("/")
['', 'block_1', 'block_2']

这将返回字符串的组件列表,这些组件由/字符分隔。从那里,您可以使用len()函数找出列表的长度,并根据您所需的逻辑采取适当的操作。