我需要尝试一个字符串对多个(独占 - 意味着匹配其中一个的字符串不能匹配任何其他)正则表达式,并根据它匹配的代码执行不同的代码.我现在拥有的是:
m = firstre.match(str)
if m:
# Do something
m = secondre.match(str)
if m:
# Do something else
m = thirdre.match(str)
if m:
# Do something different from both
Run Code Online (Sandbox Code Playgroud)
除了丑陋之外,这个代码与所有正则表达式相匹配,即使它匹配其中一个(比如firstre),这是低效的.我试着用:
elif m = secondre.match(str)
Run Code Online (Sandbox Code Playgroud)
但是我知道if语句中不允许赋值.
有没有一种优雅的方式来实现我想要的?
我正在尝试比较作为输入获得的两个字符串,但它向我打印了一个错误,例如“语法:意外的”=”。
x = readline()
y = readline()
y = println(cmp(y, "Ciao"))
x = println(cmp(x, "Ciao"))
if x=1
println("Ho fatto un confronto in modo giusto")
elseif x=0
println("No simone, non hai inserito quello che mi aspettavo")
elseif y=1
println("Hai inserito la y e l'ho controllata, il programma funziona")
elseif y=0
println("No simone, non hai inserito quello che mi aspettavo")
else println("Il programma non ha funzionato")
end
return x,y
Run Code Online (Sandbox Code Playgroud) 我是 Xcode 新手,在 Xcode 下使用 vim 作为编辑器。如何shift + O在Xcode下的vim中添加换行符而不添加空格作为缩进?
所以我不会像下面那样在空行中有很多空间git diff
我以为我在合理的范围内理解了Perl RE,但这令我感到困惑:
#!/usr/bin/perl
use strict;
use warnings;
my $test = "'some random string'";
if($test =~ /\'?(.*?)\'?/) {
print "Captured $1\n";
print "Matched $&";
}
else {
print "What?!!";
}
Run Code Online (Sandbox Code Playgroud)
版画
捕获的
匹配'
它似乎与"结局"相匹配,因此没有任何结果.
我本来期望它与整个事物相匹配,或者如果它完全不贪婪,什么都没有(因为一切都有可选匹配).
这种行为让我感到困惑,任何人都可以解释发生了什么?
我需要自动执行涉及以下任务的特定任务:
根据一组标准从我的邮箱中提取邮件 - 来自特定用户,具有特定的主题行模式等.
解析每封邮件的邮件正文并提取一些内容(邮件几乎是固定的模式)
使用特定模板创建Excel工作表(前两行是常量,第三行是本周的星期五和星期五等),然后将上面提取的内容以连续的行粘贴到此工作表中.
使用不同格式创建具有相同内容的Outlook电子邮件
(最后发送它,但我不想自动化那部分 - 我喜欢在发送邮件之前仔细检查一下.)
现在,当我想到自动执行这项任务时,Perl的Win32 :: OLE立即浮现在脑海中,因为我最近才了解它,并且在Perl中非常舒服.但是,我认为Visual Basic for Automation可能更适合这项任务,因为它是为这些任务创建的语言.
我的问题是,VBA是否足以抵消Perl和VB之间技能组的差异?几年前我小时候玩过VB6,但那是关于VB体验的程度.
我也对任何其他语言/平台建议持开放态度,只要它们具有一定的灵活性并且不太难学.我也知道一些Python.
对反向排序容器的推荐方法(例如:按降序排序向量)似乎是:
std::sort(numbers.begin(), numbers.end(), std::greater<int>());
我理解第三个参数是一个函数或函数,它帮助sort()进行比较,而std :: greater是一个模板函子,但我不明白这里发生了什么.我的C++非常生疏,如果这些都是愚蠢的问题,请耐心等待:为什么那之后std::greater<int>有括号?我们std::greater在这里创建一个新对象吗?在这种情况下,为什么我们不需要new这里的关键字?
在Julia中,fun(n::T) where T<:Integer当函数适用于所有子类型时,我经常看到代码编写Integer.但有时,我也看到fun(n::Integer),一些指南声称与上述相同,而其他人则认为效率较低,因为Julia并不专注于特定的子类型,除非明确提到子类型T.
后一种形式显然更方便,如果可能,我希望能够使用它,但这两种形式是否相同?如果没有,它们之间的实际差异是什么?
我对 Julia 很陌生,我有一个 .csv 文件,该文件存储在 gzip 中,我想从中提取一些信息以用于教育目的并更好地了解该语言。
在Python中,Panda有许多有用的函数可以帮助解决这个问题,但我似乎无法直接解决问题......
这是我的代码(我知道,非常弱!!!):
{
import Pkg
#Pkg.add("CSV")
#Pkg.add("DataFrames")
#Pkg.add("CSVFiles")
#Pkg.add("CodecZlib")
#Pkg.add("GZip")
using CSVFiles
using Pkg
using CSV
using DataFrames
using CodecZlib
using GZip
df = CSV.read("Path//to//file//file.csv.gzip", DataFrame)
print(df)
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个屏幕来显示 .csv 文件内的列的外观。
我想提取日期并制作评论最多的前 10 位用户、线程最多的前 10 天等。
我想指出的是,这不是给我的练习,而是我想自己进行的训练。 4.
我知道熊猫版本是这样的:
df['threadcreateddate'] = pd.to_datetine(df['thread_created_utc']).dt.date
Run Code Online (Sandbox Code Playgroud)
或者
df['commentcreateddate'] = pd.to_datetime(df['comment_created_utc']).dt.date
Run Code Online (Sandbox Code Playgroud)
并对其进行排序:
pf_number_of_threads = df.groupby('threadcreateddate')["thread_id'].nunique()
Run Code Online (Sandbox Code Playgroud)
如果我要绘制它:
df_number_of_threads.plot(kind='line')
plt.show()
Run Code Online (Sandbox Code Playgroud)
打印:
head = df.head()
print(df_number_of_threads.sort_values(ascending=False).head(10))
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?df.select() 函数对我不起作用。
我有一个二进制文件,我正在julia进行频率计数.
using PyPlot
import StatsBase
const stb=StatsBase
function getall(fname)
b=Mmap.mmap(fname,Vector{Int32})
#a=open(fname)
#b=reinterpret(Int32,readbytes(a))
d=stb.countmap(b)
x=collect(keys(d)) & 0x7ffffff
y=collect(values(d))
#plot(x,y,"r^")
#xlim(0,3000)
#ylim(0,3e5)
#grid("on")
return x,y
end
Run Code Online (Sandbox Code Playgroud)
在python中,我使用numpy.unique,numpy.memmap并获得类似的性能(550毫秒).Julia代码可以更快吗?有没有其他方法可以计数而不是使用StatBases.
我有一长串日期(从 1942-1-1 00:00:00 到 2012-12-31 24:00:00)。这些分别与一些金额相关(见下文)。有没有办法先单独过滤一天的所有金额,然后将它们加在一起?
例如,对于 1942-01-01,如何找到这一天(从时间 0 到 24)发生的所有值(金额),然后将它们加在一起?
time amount
DateTime Float64
1942-01-01T00:00:00 7.0
1942-01-02T00:00:00 0.2
1942-01-03T00:00:00 2.1
1942-01-04T00:00:00 3.0
:
2012-12-31T23:00:00 4.0
2012-12-31T24:00:00 0.0
Run Code Online (Sandbox Code Playgroud)
df = CSV.read(path, DataFrame)
for i in 1:24
filter(r ->hour(r.time) == i, df)
end
Run Code Online (Sandbox Code Playgroud)