每次导入包含大量静态正则表达式的python文件时,都会花费cpu周期将字符串编译到内存中的代表状态机中.
a = re.compile("a.*b")
b = re.compile("c.*d")
...
Run Code Online (Sandbox Code Playgroud)
问题:是否可以以预编译的方式将这些正则表达式存储在磁盘上的缓存中,以避免在每次导入时执行正则表达式编译?
腌制对象只需执行以下操作,无论如何都会导致编译:
>>> import pickle
>>> import re
>>> x = re.compile(".*")
>>> pickle.dumps(x)
"cre\n_compile\np0\n(S'.*'\np1\nI0\ntp2\nRp3\n."
Run Code Online (Sandbox Code Playgroud)
而re
对象是unmarshallable:
>>> import marshal
>>> import re
>>> x = re.compile(".*")
>>> marshal.dumps(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unmarshallable object
Run Code Online (Sandbox Code Playgroud) 所以今天我写的代码基本上是这样的:
string returnString = s.Replace("!", " ")
.Replace("@", " ")
.Replace("#", " ")
.Replace("$", " ")
.Replace("%", " ")
.Replace("^", " ")
.Replace("*", " ")
.Replace("_", " ")
.Replace("+", " ")
.Replace("=", " ")
.Replace("\", " ")
Run Code Online (Sandbox Code Playgroud)
这不是很好.我想知道是否有一个正则表达式或者我可以写的东西会替换所有对该Replace()
函数的调用?
如何在shell脚本中将字符串拆分为数组?
我尝试过IFS='delimiter'
,它适用于循环,(for, while)
但我需要一个来自该字符串的数组.
如何从字符串中创建数组?
谢谢!
我正在寻找一个.NET正则表达式从网页中提取所有URL,但是没有找到一个足够全面的URL来涵盖指定链接的所有不同方法.
还有一个问题:
是否有一个正则表达式来统治它们?或者我最好使用一系列不那么复杂的正则表达式,只使用对原始HTML的mutliple传递?(速度与可维护性)
我在projectlocker(免费的svn主机)上有一个帐户,我不知道如何上传我的项目文件.
我在仪表板中找不到任何选项.
我在我的电脑上使用tortoiseSvn,那么如何上传文件并配置tortoiseSvn?
我正在使用scrapy来抓取不同的网站,为每个网站我都有一个项目(提取不同的信息)
好吧,例如我有一个通用管道(大多数信息是相同的)但现在我正在抓取一些谷歌搜索响应和管道必须是不同的.
例如:
GenericItem
使用 GenericPipeline
但是GoogleItem
用途GoogleItemPipeline
,但是当蜘蛛爬行时它试图使用GenericPipeline
而不是GoogleItemPipeline
....我如何指定谷歌蜘蛛必须使用哪个管道?
我尝试将文件从本地磁盘复制到hdfs
.起初它给了SafeModeException
.在搜索解决方案时,我读到如果再次执行相同的命令,则不会出现问题.所以我再次尝试,并没有给出例外.
hduser@saket:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg
copyFromLocal: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hduser/gutenberg. Name node is in safe mode.
hduser@saket:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我应该使用此代码保持安全模式吗?
hadoop dfs -safemode leave
Run Code Online (Sandbox Code Playgroud) 文档存储有以下字段:
_id:
NumberofChildren: Integer
OwnsAHome: Boolean
Income: Integer
Run Code Online (Sandbox Code Playgroud)
我需要使用聚合框架按子节点数排序,所以输出是这样的:
Number of Children: 3
Number of People: some value, say 17
Number of People who own a home: some value less than 17 which is a sum of the number of true Booleans
Average income: some value
Run Code Online (Sandbox Code Playgroud)
我会怎么做这与聚集的MongoDB,特别是关于计数的次数多少Boolean OwnsAHome
,是true
?
谢谢!
Scrapy合同问题
我开始研究scrapy框架.为了提取也实现了一些蜘蛛,但我无法为蜘蛛编写单元测试用例,因为scrapy提供的contract包文档没有正确的程序来编写测试用例.请帮帮我这件事.
我正在建立一个相当大的网站,我的.htaccess开始感觉有点膨胀,有没有办法取代我现有的系统 - 每个可能通过的可能数量的变量的一个规则,一个捕获所有可以解释不同数量输入的表达式?
例如,我目前有:
RewriteRule ^([a-z]+)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?mode=$1&id=$2&$3=$4&$5=$6
RewriteRule ^([a-z]+)/([^/]*)/([^/]*)/([^/]*)$ /index.php?mode=$1&id=$2&$3=$4
RewriteRule ^([a-z]+)/([^/]*)$ /index.php?mode=$1&id=$2
RewriteRule ^([a-z]+)$ /index.php?mode=$1
Run Code Online (Sandbox Code Playgroud)
第一个反向引用始终是模式,并且(如果存在的话)第二个反向引用总是id,此后任何进一步的反向引用在输入的名称和它的值之间交替
http://www.example.com/search
http://www.example.com/search/3039/sort_by/name_asc/page/23
Run Code Online (Sandbox Code Playgroud)
我希望能够有一个表达式来优雅地处理所有输入.
regex ×4
python ×3
scrapy ×2
.net ×1
apache ×1
arrays ×1
c# ×1
caching ×1
hadoop ×1
html ×1
mod-rewrite ×1
mongodb ×1
python-2.7 ×1
replace ×1
shell ×1
string ×1
svn ×1
tortoisesvn ×1
unit-testing ×1
web-scraping ×1