-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 に答える