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

2015-07-01 16:48:09 +08:00
 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 判断,麻烦。
5991 次点击
所在节点    Python
23 条回复
cc7756789
2015-07-01 20:23:57 +08:00
url_no_scheme = url.split('://', 1)[1] if url.split('://', 1)[1] else ''
这样也行啊!
czheo
2015-07-01 21:16:47 +08:00
知道ruby的rescue的好了吧
laoyuan
2015-07-01 23:42:36 +08:00
@cc7756789 啊?会报错吧
laoyuan
2015-07-01 23:45:58 +08:00
@czheo 所以我在学Ruby 哈哈,我感觉Ruby 兼有PHP 的动态灵活性和 Python 比较完全的面对对象
saber000
2015-07-02 10:48:09 +08:00
jackyspy
2015-07-02 11:48:37 +08:00
这样异常真的好吗?
(url.split('://', 1)+['',''])[1]
(lambda x: x[1] if len(x)==3 else '')(url.split('://', 1))
laoyuan
2015-07-02 11:52:09 +08:00
@saber000 不好意思我只学了个基础还看不懂,等我深入学学之后再研究研究吧
laoyuan
2015-07-02 11:54:20 +08:00
@jackyspy 啊哈哈哈第一条太好了之前看过类似的例子,PHP处理$_GET,但在这里就怎么想都没想出来
laoyuan
2015-07-02 11:56:52 +08:00
@jackyspy 如果我想要的是 url.split('://', 1)[0] 呢,好像没办法了吧,脑洞开启ing
laoyuan
2015-07-02 12:58:58 +08:00
哈哈,我想出来了 ([''] + url.split('://', 1))[-2]
laoyuan
2015-07-02 15:01:17 +08:00
@jackyspy 有什么办法能让re.match、re.search 写成比较美观的一行流呢?
url_no_scheme = re.search(r'://(.+)', url).group(1) if re.search(r'://(.+)', url) else ''
fburst
2015-07-02 17:32:40 +08:00
不喜欢一行的风格,难读。
picasso250
2015-07-02 19:13:48 +08:00
@laoyuan 比较好奇,PHP哪里面向对象不完全了。。。你举个例子?
laoyuan
2015-07-02 20:18:46 +08:00
@picasso250 我就随口那么一说,你就随便那么一听好了~
laoyuan
2015-07-02 20:19:52 +08:00
我感觉Ruby 兼有PHP 的动态灵活性和 PHP、Python 比较完全的面对对象
Anybfans
2015-07-02 21:28:16 +08:00
我感觉这样写就失去python的特点了啊。。不太容易维护
thinker3
2015-07-02 22:20:31 +08:00
不易读
laoyuan
2015-07-02 23:03:50 +08:00
@Anybfans 没关系啦,反正都是自己维护。。。
laoyuan
2015-07-02 23:06:04 +08:00
@thinker3 今天还学了个一行流,感觉挺好
a = [each_num for each_num in [1, 6, 3, 7] if each_num > 5]
WKPlus
2015-07-06 12:40:10 +08:00
就你这个问题而言,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