小编Wii*_*iil的帖子

循环使用100多个不同的正则表达式时,Python re模块变得慢20倍

我的问题是解析日志文件并删除每行上的可变部分以便对它们进行分组.例如:

s = re.sub(r'(?i)User [_0-9A-z]+ is ', r"User .. is ", s)
s = re.sub(r'(?i)Message rejected because : (.*?) \(.+\)', r'Message rejected because : \1 (...)', s)
Run Code Online (Sandbox Code Playgroud)

我有大约120多个匹配规则,如上所述.

我在100个不同的正则表达式上连续搜索时没有发现任何性能问题.但是,当应用101个正则表达式时,会发生巨大的减速.

使用替换我的规则时会发生完全相同的行为

for a in range(100):
    s = re.sub(r'(?i)caught here'+str(a)+':.+', r'( ... )', s)
Run Code Online (Sandbox Code Playgroud)

使用范围(101)代替它慢了20倍.

# range(100)
% ./dashlog.py file.bz2
== Took  2.1 seconds.  ==

# range(101)
% ./dashlog.py file.bz2
== Took  47.6 seconds.  ==
Run Code Online (Sandbox Code Playgroud)

为什么会发生这样的事情?有没有已知的解决方法?

(在Linux/Windows上发生在Python 2.6.6/2.7.2上.)

python regex performance

15
推荐指数
1
解决办法
492
查看次数

bq 加载:“加载操作中的 BigQuery 错误:未找到:项目 ...”

我正在尝试加载一些 ndjson 数据。首先,创建一个表完美无缺:

> bq mk --table <project-id>:<my-dataset.newtable> newtable.schema.json
Table '<project-id>:<my-database.newtable>' successfully created.
Run Code Online (Sandbox Code Playgroud)

但是,该bq load命令不会:

> bq load --source_format=NEWLINE_DELIMITED_JSON <project-id>:<my-dataset.newtable> gs://<project-id>.appspot.com/newtable.ndjson
BigQuery error in load operation: Not found: Project <project-friendly-name>
Run Code Online (Sandbox Code Playgroud)

另请注意:

  • 我从 BigQuery 的网络界面运行作业没有问题。

  • 我已经<project-id>通过bq init命令设置为默认项目,但我得到同样的错误,即使在创建表时,当我没有指定它时。

是否存在一些未正确设置的环境变量的问题?

google-cloud-storage google-bigquery gcloud

2
推荐指数
1
解决办法
5699
查看次数