gpt4 book ai didi

python - 从这个列表中获取 playAudio 调用的参数的优雅方法是什么

转载 作者:行者123 更新时间:2023-11-30 23:59:40 26 4
gpt4 key购买 nike

我知道这是基本的。

我只是想知道什么是优雅的方法。

例如:

我想要此列表中的“python01.wav”和“py*thon”字符串

列表如下:

[
[('name', 'entry')],
[('class', 'entry')],
[('type', 'text/javascript'), ('src', '/term_added.php?hw=python')],
[('type', 'text/javascript')],
[('class', 'headword')],
[('class', 'hw')],
[],
[('class', 'pr')],
[('class', 'unicode')],
[('class', 'unicode')],
[('class', 'unicode')],
[('class', 'unicode')],
[],
[('href', '#'), ('onclick', "playAudio('python01.wav', 'py*thon'); return false;"), ('class', 'audio_link'), ('target', '_blank')],
[('src', '/images/audio.gif'), ('alt', 'Listen to audio'), ('title', 'Listen to audio')],
[],
[('class', 'fl')],
[],
[('class', 'in')],
[('class', 'il')],
[('class', 'if')],
[],
[('class', 'def')],
[('class', 'gram')],
[],
]

感谢您的帮助!

最佳答案

也许不是最好的解决方案,但似乎可以满足您的要求:

l = [huge list from your example]
for e in l: # for each list
for t in e: # for each tuple
for s in t: # each string
if 'playAudio' in s:
args = s[9:].split(',') #skip 'playAudio' split on comma
print "%s,%s" % (args[0].strip('('),
args[1].lstrip(" ")[0:args[1].find(')')]

我将“优化”这个练习留给您。如果您可以解释这些数据来自哪里以及它具有什么样的特征(playAudio 只能附加到具有 HREF 属性的事物吗?),我们可以为您提供更好的解决方案。

编辑:

就您个人的具体示例而言,我会这样做:

from BeautifulSoup import BeautifulSoup, SoupStrainer
import re
import urllib2

doc = urllib2.urlopen("http://www.learnersdictionary.com/search/python").read()
doc = doc.replace('</SCR', '')
audioLinks = SoupStrainer('a', onclick=re.compile(r'^playAudio'))
soup = [str(elm) for elm in BeautifulSoup(doc, parseOnlyThese=audio)]
for elm in soup:
print re.search(r'playAudio\((.*[^)])\)', elm).group(1)
# prints 'python01.wav', 'py*thon'

关于python - 从这个列表中获取 playAudio 调用的参数的优雅方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2189259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com