Python 里 try... except 要是能写成一行流就好了

2015 年 7 月 1 日
 laoyuan
像这样,多安逸
url_no_scheme = try url.split('://', 1)[1] except ''

现在只能写成:
url_no_scheme = url.split('://', 1)[1] if '://' in url else ''

常用的还有re.match、re.search,不确定能不能匹配的话,一行流都得写两遍,或者赋值到变量再if 判断,麻烦。
7142 次点击
所在节点    Python
23 条回复
cc7756789
2015 年 7 月 1 日
url_no_scheme = url.split('://', 1)[1] if url.split('://', 1)[1] else ''
这样也行啊!
czheo
2015 年 7 月 1 日
知道ruby的rescue的好了吧
laoyuan
2015 年 7 月 1 日
@cc7756789 啊?会报错吧
laoyuan
2015 年 7 月 1 日
@czheo 所以我在学Ruby 哈哈,我感觉Ruby 兼有PHP 的动态灵活性和 Python 比较完全的面对对象
saber000
2015 年 7 月 2 日
jackyspy
2015 年 7 月 2 日
这样异常真的好吗?
(url.split('://', 1)+['',''])[1]
(lambda x: x[1] if len(x)==3 else '')(url.split('://', 1))
laoyuan
2015 年 7 月 2 日
@saber000 不好意思我只学了个基础还看不懂,等我深入学学之后再研究研究吧
laoyuan
2015 年 7 月 2 日
@jackyspy 啊哈哈哈第一条太好了之前看过类似的例子,PHP处理$_GET,但在这里就怎么想都没想出来
laoyuan
2015 年 7 月 2 日
@jackyspy 如果我想要的是 url.split('://', 1)[0] 呢,好像没办法了吧,脑洞开启ing
laoyuan
2015 年 7 月 2 日
哈哈,我想出来了 ([''] + url.split('://', 1))[-2]
laoyuan
2015 年 7 月 2 日
@jackyspy 有什么办法能让re.match、re.search 写成比较美观的一行流呢?
url_no_scheme = re.search(r'://(.+)', url).group(1) if re.search(r'://(.+)', url) else ''
fburst
2015 年 7 月 2 日
不喜欢一行的风格,难读。
picasso250
2015 年 7 月 2 日
@laoyuan 比较好奇,PHP哪里面向对象不完全了。。。你举个例子?
laoyuan
2015 年 7 月 2 日
@picasso250 我就随口那么一说,你就随便那么一听好了~
laoyuan
2015 年 7 月 2 日
我感觉Ruby 兼有PHP 的动态灵活性和 PHP、Python 比较完全的面对对象
CodeDrift
2015 年 7 月 2 日
我感觉这样写就失去python的特点了啊。。不太容易维护
thinker3
2015 年 7 月 2 日
不易读
laoyuan
2015 年 7 月 2 日
@Anybfans 没关系啦,反正都是自己维护。。。
laoyuan
2015 年 7 月 2 日
@thinker3 今天还学了个一行流,感觉挺好
a = [each_num for each_num in [1, 6, 3, 7] if each_num > 5]
WKPlus
2015 年 7 月 6 日
就你这个问题而言,url.split("://", 1)[-1] 就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/202525

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX