csv格式文件解析失败_解析不统一但CSV格式的文本文件

csv格式⽂件解析失败_解析不统⼀但CSV格式的⽂本⽂件我正在尝试解析以下⽂件(本地银⾏的导出交易):
Clnr Kontonr Konto Valuta Bokföringsdatum Transaktionsdatum Referens Kontohändelse Belopp
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 Hyresgästför Autogiro -15,00
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 SPOTIFY SPOTIFY Kortköp/uttag -19,00
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 +46123456789 Swish mottagen 80,00
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 PRIS NYCKELKUND Debiteringsavgift -49,00
12345 1234567890 vardagskonto SEK 13-09-27 13-09-27 12345678 direktbetalning -301,00
12345 1234567890 vardagskonto SEK 13-09-27 13-09-27 Unionen Bg-bet. via internet -125,00
12345 1234567890 vardagskonto SEK 13-09-26 13-09-26 123456789012345 Överföring -1 000,00
但是我似乎⽆法为其创建合适的正则表达式。⽬标是提取第5、6、7和9列(当然,如果可以全部提取,那
转向节将是⼀个额外的收获),但第7列确实很棘⼿,因为⽂件不是CSV,并且第7列可以包含多个单词。第8列是不可预测的,但是我想我在上⾯的⽰例中发现了⼤多数相关可能性。
关于如何成功解析此⽂件的任何提⽰?显然我的正则表达式还不够。:-(
如果有什么不同,我希望可以⽤Python甚⾄POSIX(grep / sed / etc)解决。
解决⽅案
仅出于此⽬的,这就是您可以“⾃动”解析此格式的⽅法:
import re
露天看台# find out spaces' positions common to all rows
spaces = sorted(set.intersection(*[
d() for m in re.finditer(ur'\s', line))
for line in data
]))
# split by these positions
for line in data:
row = []
防伪胶带p = 0
for s in spaces:
row.append(line[p:s])
p = s
row.append(line[p:])
row = filter(len, map(unicode.strip, row))
print ' | '.join(row) # or whatever
手机背光源
为您的数据:
data = u"""
Clnr Kontonr Konto Valuta Bokföringsdatum Transaktionsdatum Referens Kontohändelse Belopp
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 Hyresgästför Autogiro -15,00
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 SPOTIFY SPOTIFY Kortköp/uttag -19,00
betal
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 +46123456789 Swish mottagen 80,00
四辊冷轧机
12345 1234567890 vardagskonto SEK 13-09-30 13-09-30 PRIS NYCKELKUND Debiteringsavgift -49,00
12345 1234567890 vardagskonto SEK 13-09-27 13-09-27 12345678 direktbetalning -301,00
12345 1234567890 vardagskonto SEK 13-09-27 13-09-27 Unionen Bg-bet. via internet -125,00
12345 1234567890 vardagskonto SEK 13-09-26 13-09-26 123456789012345 Överföring -1 000,00
""".strip().splitlines()
打印:
Clnr | Kontonr | Konto | Valuta | Bokföringsdatum | Transaktionsdatum | Referens | Kontohändelse | Belopp
12345 | 1234567890 | vardagskonto | SEK | 13-09-30 | 13-09-30 | Hyresgästför | Autogiro | -15,00
12345 | 1234567890 | vardagskonto | SEK | 13-09-30 | 13-09-30 | SPOTIFY SPOTIFY | Kortköp/uttag | -19,00 12345 | 1234567890 | vardagskonto | SEK | 13-09-30 | 13-09-30 | +46123456789 | Swish mottagen | 80,00 12345 | 1234567890 | vardagskonto | SEK | 13-09-30 | 13-09-30 | PRIS NYCKELKUND | Debiteringsavgift | -49,00 12345 | 1234567890 | vardagskonto | SEK | 13-09-27 | 13-09-27 | 12345678 | direktbetalning | -301,00
12345 | 1234567890 | vardagskonto | SEK | 13-09-27 | 13-09-27 | Unionen | Bg-bet. via internet | -125,00
12345 | 1234567890 | vardagskonto | SEK | 13-09-26 | 13-09-26 | 123456789012345 | Överföring | -1 000,00

本文发布于:2024-09-21 16:29:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/348304.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:解析   相关   提取   导出   单词
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议