将文本字段解析为excel列

2024-09-29 18:45:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解析出超过20000条记录的数据。每个记录有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           ?                   ?

Tags: datemodel记录逻辑javaasset解决方案eastern
1条回答
网友
1楼 · 发布于 2024-09-29 18:45:59

这个有点差劲,但很管用。给你:

#!/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})"

*不要忘记添加所有字段,因为这样做会中断。你知道吗

相关问题 更多 >

    热门问题