-1

我正在尝试从带有名称、国家和各种数字字段等标题的表格形式的 PDF 中提取数据。

我遇到名称和国家/地区长度不同的问题。我也不确定如何获得这些数字,因为我尝试的任何方法都错过了第一个数字。

例如

Sean O'Hair United States 2.758 137.906 50 -7.525 0.000  
 Y.E. Yang Korea 2.734 153.128 56 -6.722 0.000  
 Bo Van Pelt United States 2.733 153.056 56 -4.895 0.000
4

2 回答 2

0

考虑到它的年龄,这不太可能仍然是一个问题,但它被列为未回答,因此为了任何有类似问题的人的利益......

这是一个快速模式,可以将所有匹配项提取到一个数组中——它可能需要也可能不需要变得更灵活:

<cfset Matches = rematch( '\D+ \d\.\d{3} \d+\.\d{3} \d\d -\d\.\d{3} 0.000' , Input ) />

然后遍历这些结果,对于每个匹配项,您可以将名称+国家与数字分开:

<cfset NameAndCountry = trim(Left( CurMatch , refind('\d',CurMatch)-1 )) />
<cfset Numbers = Right( CurMatch , Len(CurMatch)-Len(NameAndCountry) ) />

从名称中提取国家并不简单 - 实际上并没有任何规则来确定哪个是哪个,因此它需要一组国家来循环并检查,例如:

<cfloop index="CurCountry" array=#Countries# >
    <cfif NameAndCountry.endsWith( CurCountry ) >
        <cfset Name = Left( NameAndCountry , Len(NameAndCountry)-Len(CurCountry) />
        <cfbreak />
    </cfif>
</cfloop>

对于数字,使用带有空格作为分隔符的ListToArray可以将它们分开。

于 2013-09-22T23:39:17.900 回答
-1

如果您通过以下方式传输示例数据:

sed -e 's/^[^0-9]*//'

它将从头开始去除所有非数字字符。这有帮助吗?

PS 从国家/地区拆分名称会很棘手,因为看起来之间只有一个空格,而且名称和国家之间也有空格。

编辑:哎呀,这将从第一个数字中删除一个减号。最好只删除单词(非数字序列后跟空格):

sed -e 's/^\([^0-9 ]* \)*//'
于 2011-03-17T22:42:42.457 回答