V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  jin6220  ›  全部回复第 9 页 / 共 10 页
回复总数  188
1  2  3  4  5  6  7  8  9  10  
@xiamx 好吧 谢谢,有个疑问,那个网站的 json 数据转换为字典之后(因为里头的汉字没显示出来。),然后 str 字符串化,这样正则可以吗?
@imlonghao 嗯 这个列表表达式用的好 学习了 比 for 循环简洁,但是没 for 循环好理解。
@zzn 那用什么啊 对这块不太懂 这个 json 没显示汉字,变成字典显示之后然后正则的
@Valyrian 理论是不行,第一次也是发现不对,然后就把 json ( dict )数据 str 化了,最后是找到结果了。
吃饭去了。。。
总结下
非正则的办法:
第一步: a=j2['result'] (这里 j2 就不用字符串话了)
a 是一个列表,里面是 20 个并联关系的字典。
第二部:
>>> for b in a :
print(b.get('title_hide'))
>>> for b in a :
print(b.get('url'))

正则方法:
第一种
urls=re.findall(r"(?<='url':)\s*'http://www.guokr.com/article/\d{5,7}/'(?=,)",str(j2))
第二种(看运气,前后邻居可能会变,然后就失效)
urlsre=re.findall(r"'url'\s*:\s*'(.+?)',\s*'title'",str(j2),re.M)
正则前后关系匹配:"url"\s*:\s*"(.+?)"\,\s*"title re.M
但是实际 url 的邻居可能会变.
@allenhu 我是新手,不过也不从事程序猿专业,接触的数据应该都会很简单。
@Yinz 里头的主体结构类似是:
{ "result": [{"title_hide": ...,,"url": ...},{title_hide:...,url:...},{title_hide:...,url:...},,{title_hide:...,url:...},其他字典]}
result 的值是一个列表,列表里的字典都是并列结构,不循环可以?
@Yinz 嗯 你那个结构好像不对 但是换成 json 无非就是套嵌 dict 循环下就立马解出了 正则不如派森像是人类语言啊啊啊
但是还是很想弄懂正则怎么写 毕竟有时候只有正则解决问题很暴力 =,=
======自答下:=========
第一步: a=j2['result'] (这里 j2 就不用字符串话了)
第二部:
>>> for b in a :
print(b.get('title_hide'))


制作一个万花筒,来一场镜花水月的邂逅
让翅膀在指尖上舞动:用铁丝制作在指尖扇动的小机械
来做一个漂亮的鱼标本吧!
低成本打造头戴式立体声蓝牙耳机
自动温调速风扇,让你的电脑更冷静
给你的键盘加上无线 PPT 控制功能吧
给钛挂件镀一层彩色外衣
泥塑入门,做个蒸汽朋克范儿黄金头骨
送妹纸魔方拼图,你也可以
温差发电机:不用电的“智能”风扇
手机?投影机?一个盒子就可兼得!
GEEK 小浪漫:靠在一起就会闪烁的心
制作属于你自己的球形关节人偶
GEEK 厨房之草莓酱,和一坨肉眼可见 DNA
沏一壶苔藓
软木塞变身灰袍甘道夫
自制模具,巧克力形状随便你
情人节,送 Ta 一支彩虹玫瑰!
远程电子点火器,安全烟火必备
化学小实验:居家版“法老之蛇”
>>> for b in a :
print(b.get('url'))


http://www.guokr.com/article/437636/
http://www.guokr.com/article/437297/
http://www.guokr.com/article/437489/
http://www.guokr.com/article/437145/
http://www.guokr.com/article/437064/
http://www.guokr.com/article/437046/
http://www.guokr.com/article/437010/
http://www.guokr.com/article/436762/
http://www.guokr.com/article/436941/
http://www.guokr.com/article/436937/
http://www.guokr.com/article/436912/
http://www.guokr.com/article/436915/
http://www.guokr.com/article/436835/
http://www.guokr.com/article/436799/
http://www.guokr.com/article/436722/
http://www.guokr.com/article/436694/
http://www.guokr.com/article/436679/
http://www.guokr.com/article/436667/
http://www.guokr.com/article/436640/
http://www.guokr.com/article/436644/
>>>
当初没用字典是嫌麻烦,各种套嵌。看来明天还得再看看正则。
@zhjits 是已经转换成 dict 了 但是现在正则已经弄出一半数据了 。。。
for title in titles:
print(title)
别人上传的代码怎么那么结构清晰啊 =,=
2016-12-18 10:03:04 +08:00
回复了 nicksite 创建的主题 Python 我为什么学 python?因为想去“豆瓣”和“知乎”,那么你呢?
@BGLL 目前最适合移动端派森编程还是 pys60 吧
论坛里各种蟒蛇平台下的 sis 软件
可惜塞班停产了
想手机实现 py 软件安卓之类的还不是很完善
2016-11-30 22:02:33 +08:00
回复了 jin6220 创建的主题 Python 请问天涯楼主的长贴,有图片那种,爬虫到整合为一个文档?
@omg21 是啊 那时候还是天涯火的时候 热门贴楼尾都是各种留言宣传它们的脱水贴网站地址 我也是现在也才知道是爬虫的 哈哈
你们网站盈利靠的是淘宝客么???
2016-11-06 20:31:34 +08:00
回复了 jin6220 创建的主题 Python 正则 re.findall(r'x?','xy123'),x 重复 0 次是什么意思?
源字符: xyx
或者写成 。 x 。 y 。 x 。(用。表示位置)
表达式: x?
Match 1
Full match 0-1 `x`
Match 2
Full match 1-1 ``
Match 3
Full match 2-3 `x`
Match 4
Full match 3-3 ``
=。=。=。=。=。=
>>> re.findall(r'x?','xyx') #正则匹配模式含有空集合
['x', '', 'x', '']
>>> re.findall(r'x??','xyx')
['', '', '', '']
通过实践可知,如果正则匹配模式含有空集合的话,匹配的时候,字符与位置是同时参与的,之前理解的是根据先后关系先字符前面的位置然后是字符。两者同时参与正则模式匹配,根据贪婪模式或者非贪婪模式选其一(匹配字符或者位置)。

@DiamondbacK
2016-11-06 19:46:11 +08:00
回复了 jin6220 创建的主题 Python 正则 re.findall(r'x?','xy123'),x 重复 0 次是什么意思?
@DiamondbacK 刚才刚好去搜索了 互联网找到这份内容:
’ 对于字符串” 123 “而言,包括三个字符四个位置。正则表达式匹配过程中,如果子表达式匹配到东西,而并非是一个位置,并最终保存到匹配的结果当中。这样的就称为占有字符,而只匹配一个位置,或者是匹配的内容并不保存到匹配结果中,这种就称作零宽度,后续会讲到的零宽度断言等。占有字符是互斥的,零宽度是非互斥的。也就是一个字符,同一时间只能由一个子表达式匹配,而一个位置,却可以同时由多个零宽度的子表达式匹配。‘

然后看到您的回复,感觉好像是这样子:
源文件是由两个部分组成,可以看到的占有字符,另一部分是字符两边的位置。
xy123 是 5 个字符, 6 个位置。
不过这样的话 6 个位置都符合 x?中 0 次的空集合啊,那这样结果是少匹配到一次 ''???
这种东西深入理解还要从原理上理解。
或者从例子中实践记住结果,当个实践派。
2016-11-06 19:33:24 +08:00
回复了 jin6220 创建的主题 Python 正则 re.findall(r'x?','xy123'),x 重复 0 次是什么意思?
@noli 你看看 @DiamondbacK 写的 更详细。
1  2  3  4  5  6  7  8  9  10  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5794 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 02:49 · PVG 10:49 · LAX 18:49 · JFK 21:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.