【发布时间】:2014-08-25 00:18:54
【问题描述】:
我有一些我正在解析的数据采用以下格式:
8344,5354,Binh Duong,1,0103313333333033133331,1,13333333331,1,00313330133
,8344,7633,TT Ha Noi,2,3330333113333303111303,3,33133331133,2,30333133010
....more data.....
第一条记录不以逗号开头,但所有后续数据行都以逗号开头。我想取第一行第 4 和第 5 个逗号之间的所有数字,以及所有其他行的第 5 和第 6 个逗号之间的所有数字,并使用逗号分割这个字符串。
所以在上面的例子中 '0103313333333033133331' 应该打印为 '0,1,0,3,3,1,3,3,3,3,3,3,3,0,3,3,1,3 ,3,3,3,1'。困难在于逗号 x 和 y 之间的字符串长度取决于我正在解析的数据。我已经使用正则表达式来隔离有问题的字符串,只要它有 16 位数字,但在我可能解析的所有项目中并非如此。
因此,使用具有 16 个“{}”实例的 .format() 方法会在字符串不是 16 字节长的项目上引发元组索引错误。
谁能建议一种实现我想要的方法?
谢谢
【问题讨论】:
-
你需要得到的每行总是22位数字?
-
@alecxe 嗨,alecxe,根据我正在解析的内容,数字可能会有很大差异。
-
好的,所以,这是一个逗号分隔的数据,您可以通过
csv模块解析。问题是:你知道这组数字会出现在什么位置吗? (例如,总是在第 4 和第 5 个逗号之间) -
@alecxe 是的,它总是在第一行数据的第 4 和第 5 个逗号之间,并且总是在所有后续行的第 5 和第 6 个逗号之间
-
您真的要为此使用正则表达式吗?