草庐IT

Python 正则表达式——无关的匹配

我想使用-,+=,==,=,来拆分字符串>+和空格作为分隔符。我想保留分隔符,除非它是空格。我尝试使用以下代码实现此目的:deftokenize(s):importrepattern=re.compile("(\-|\+\=|\=\=|\=|\+)|\s+")returnpattern.split(s)print(tokenize("hello-+=====+there"))我期望输出是['hello','-','+=','==','=','=','+','there']虽然我得到了['hello','-','','+=','','==','','=','',None,'','=','

python - 在 Python 中解析上下文无关文法

Python中有哪些工具可以帮助解析上下文无关语法?当然可以自己动手,但我正在寻找可以为给定CFG生成解析器的通用工具。 最佳答案 强烈推荐PLY-它是Python中的Lex/Yacc克隆,以复杂的方式使用该语言的内省(introspection)功能以允许非常自然的语法规范。如果您还记得的话,Yacc是CFG在一种可理解的DSL中的体现,它定义了如何解析它们。我用它来实现我的parserforANSIC与PLY的交互几乎毫不费力。 关于python-在Python中解析上下文无关文法,

python - 为什么当我在一个集合中切换顺序时我的代码采用不同的值(知道顺序与集合无关)

我正在尝试实现一种返回图形边缘的方法,该图形由邻接列表/字典表示。所以为了遍历字典,首先我遍历键,然后遍历存储在相应键中的每个值。在嵌套的for循环中,我有一个条件,如果特定边,比如(a,b)不在边集中,则将其添加到集合中——否则通过。在我第一次运行时,该方法接受了相同的边——也就是说,在边集中,有(a,b)和(b,a)。classGraph():def__init__(self,grph={}):self.graph=grphdefget_vertices(self):forkeysinself.graph:yieldkeysdefget_edges(self):edges=set(

python - 哪种编程语言在其正式规范中具有非常短的上下文无关语法?

什么编程语言的语法短而漂亮(在EBNF中)?有些语言更容易被解析。前段时间我创建了一个简单的VHDL解析器,但速度很慢。不是因为它完全用Python实现,而是因为VHDL语法(在EBNF中)非常庞大。Python的EBNF很漂亮,但不是很短。我建议像LISP这样的许多函数式编程语言都有简短的语法,但我对更流行的简单命令式语言感兴趣,例如C或Bash。 最佳答案 我没有比较过,但Lua是一门以语法简单着称的语言。BNF位于本引用手册的最后:http://www.lua.org/manual/5.1/manual.html.

python - 如何使用 Python 创建与语言无关的库?

如果我在Python中创建一个包,那么另一个Python用户可以导入该包并与之交互。我如何创建一个包,以便其他用户使用什么语言调用库无关紧要?我可以指定输入和输出文件格式,这样另一种语言就可以通过仅提供输入文件和读取输出文件来与我的Python代码交互。但是,创建输入和输出文件的计算成本非常高。有更简单的解决方案吗? 最佳答案 如果您希望另一种语言能够直接使用您的库(不使用任何类型的远程服务或IPC东西,这是完全不同的鱼),您需要编写语言绑定(bind),这意味着他们在目标语言中调用了一个层,该层在底层调用您的包。有多种工具包可用于

python - Hierarchical Dirichlet Process Gensim 主题数与语料库大小无关

我在一组文档上使用GensimHDP模块。>>>hdp=models.HdpModel(corpusB,id2word=dictionaryB)>>>topics=hdp.print_topics(topics=-1,topn=20)>>>len(topics)150>>>hdp=models.HdpModel(corpusA,id2word=dictionaryA)>>>topics=hdp.print_topics(topics=-1,topn=20)>>>len(topics)150>>>len(corpusA)1113>>>len(corpusB)17为什么主题数量与语料库长度

python - 开始编写非上下文无关的编程语言的好资源是什么?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。锁定。这个问题及其答案是locked因为这个问题离题但具有历史意义。它目前不接受新的答案或互动。我正在寻找一种有趣的编程语言,但是我看到的大部分资源都是用于编写上下文无关语言的,但是我希望编写一种语言,如python,使用缩进,据我所知意味着它不能是上下文无关的。

python - 存在一些顺序无关紧要的单词的正则表达式

我想编写一个正则表达式来搜索某些单词的存在,但它们出现的顺序无关紧要。例如,搜索“Tim”和“stupid”。我的正则表达式是Tim.*stupid|stupid.*Tim。但是是否可以编写一个更简单的正则表达式(例如,这两个词在正则表达式本身中只出现一次)? 最佳答案 看这个正则表达式:/^(?=.*Tim)(?=.*stupid).+/正则表达式解释:^断言字符串开头的位置。(?=.*Tim)断言字符串中存在“Tim”。(?=.*stupid)断言字符串中存在“stupid”。.+现在我们的短语已经存在,这个字符串是有效的。继续

android - 以编程方式将 LayoutParams 上的高度设置为与密度无关的像素

有没有办法设置LayoutParams的高度/宽度?作为与密度无关的像素(dp)?以编程方式设置时,看起来高度/宽度以像素为单位,而不是dp。 最佳答案 您需要将倾角值转换为像素:intheight=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,,getResources().getDisplayMetrics());对我来说,这就是诀窍。 关于android-以编程方式将LayoutParams上的高度设置为与密度

android - 以编程方式将 LayoutParams 上的高度设置为与密度无关的像素

有没有办法设置LayoutParams的高度/宽度?作为与密度无关的像素(dp)?以编程方式设置时,看起来高度/宽度以像素为单位,而不是dp。 最佳答案 您需要将倾角值转换为像素:intheight=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,,getResources().getDisplayMetrics());对我来说,这就是诀窍。 关于android-以编程方式将LayoutParams上的高度设置为与密度