从一行SPSS语法中提取字符串并转换为日期

时间:2017-10-01 03:27:18

标签: python spss

我的语法中的文件句柄引用一个文件夹,其中包含YYYYDDMM格式的版本号。例如,下面引用的“v20170215”

var num = $("#phone").val();

if (!/((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}/.test(num)) {
  alert("***-***-**** or (***) ***-**** form only");
  return false;
}

根据需要处理的新数据,定期更新文件句柄的版本部分。文件句柄始终以“v”结尾,后跟YYYYMMDD日期。

如何从文件句柄(例如“20170215”)中自动提取最后一个“YYYYMMDD”字符串并从中创建日期变量?

如果日期是数据中的字符串变量,我可以使用以下内容:

file handle WORKING/name='ROOT\Uploads\20141001_20150930 v20170215'.

但鉴于它是一行语法我需要解析,我怀疑我应该看看Python,但我很难解决这个问题。

2 个答案:

答案 0 :(得分:3)

我假设您无法将更新的参考作为来自创建更新语法的相同来源的数据获取(可能是一个更简单的解决方案)。
定义句柄后,您可以通过以下方式将该定义提取到数据中:

check_matrix()

这将打开一个名为E5 = E9的数据集,其中变量dataset declare myhandle. oms/select tables/if commands=['Show'] subtypes=['File Handles']/destination format=SAV outfile='myhandle'. show handles. omsend. dataset activate myhandle. 将包含句柄中定义的文件的完整路径。从那里你必须只提取你需要的字符串 - 看看这是否适合你:

myhandle

现在您拥有了所需的字符串,您可以继续将其转换为日期并将其与数据匹配。

答案 1 :(得分:1)

假设语法来自您可以使用Python打开和处理的文件,您可以在空格上拆分行,使用切片抓取最后一个字段的日期部分,然后将其输入datetime.strptime()进行解析将字符串转换为datetime.date对象。

>>> from datetime import datetime    
>>> s = r"file handle WORKING/name='ROOT\Uploads\20141001_20150930 v20170215'."
>>> date_string = s.split()[-1][1:-2]
>>> datetime.strptime(date_string, '%Y%m%d').date()
datetime.date(2017, 2, 15)