将文本字段解析为excel列

时间:2016-09-16 19:34:54

标签: python excel parsing text vbscript

我试图解析超过20,000条记录的数据。每条记录有4个字段,前缀为2个字母数字值。以下是2条记录的示例。我目前有一个基于链接使用Java的膨胀解决方案:Parsing HTML Data using Java (DOM parse)。但是我不打算使用那个解决方案,因为仅仅分离记录就太过分了。是否有使用VBS,Python或任何其他语言的解决方案可以根据我已经使用的逻辑分离出字段?还是另一种逻辑方法?

     100000000          SMP008483
  |---   Category                Western
  |---   Model                   Ford
  |---   Asset Delivered Date    ?
  |---   Scheduled               ?

     100000001          SMP008484
  |---   Category                Eastern
  |---   Model                   Chevrolet
  |---   Asset Delivered Date    ?
  |---   Scheduled               ?

预期输出在这里:

ID1            ID2          Category    Model       Asset Delivered Date    Scheduled                           
100000000      SMP008483    Western     Ford                ?                   ?
100000001      SMP008484    Eastern     Chevrolet           ?                   ?

1 个答案:

答案 0 :(得分:0)

这个有点蹩脚,但它有效。你走了:

#!/bin/bash
i=0
while IFS= read -r line;do
echo $line | egrep -q '^[0-9]+'
if test $? -eq 0; then
  id1=$(echo $line | cut -d' ' -f1)
  id2=$(echo $line | cut -d' ' -f2)
  ((i++))
fi
echo $line | egrep -q 'Category'
if test $? -eq 0; then
  cat=$(echo $line | sed -e 's/^.*Category//')
  ((i++))
fi
echo $line | egrep -q 'Model'
if test $? -eq 0; then
  model=$(echo $line | sed -e 's/^.*Model//')
  ((i++))
fi
echo $line | egrep -q 'Asset Delivered Date'
if test $? -eq 0; then
  date=$(echo $line | sed -e 's/^.*Asset Delivered Date//')
  ((i++))
fi
echo $line | egrep -q 'Scheduled'
if test $? -eq 0; then
  sch=$(echo $line | sed -e 's/^.*Scheduled//')
  ((i++))
fi
if test $i -eq 5; then
  echo -e "${id1}\t${id2}\t${cat}\t${model}\t${date}\t${sch}"
  i=0
fi
done <<< "$(cat ${1})"

*不要忘记添加所有字段,因为如果你这样做会破坏。