我有一个包含UUIDS的文本文件,如下所示:
A4AB4CD2-016B-411E-8BA1-0000C592BF17
当我尝试使用python解析/打印文件时,大多数(但不是全部)最终看起来像这样:
12:40:54:457
我正在解析每行三个块,一个双,一个日期和这个uuid。前两部分工作正常。相关的代码行是:
for line in fileLines:
parts = line.split()
# Parse first two chunks
outputFile.write(""" WHERE tableID = '""" + uuid.UUID(parts[2]) + """'""")
这会失败,因为UUID的格式已经是12:40:54:547,但我不知道这个子类型的UUID是什么,更不用说如何正确解析它了。我的目标只是简单地在uuid中读取它,然后用它周围的一些额外文本重新打印它,这样我就可以将它作为SQL脚本运行。
我正在运行python 3.3.2
完整的输入行如下所示:
339.00 2013-06-18 12:40:54.457 A4AB4CD2-016B-411E-8BA1-0000C592BF17
答案 0 :(得分:3)
如果UUID始终位于该行的最后,请使用[-1]
访问它outputFile.write(""" WHERE tableID = '""" + uuid.UUID(parts[-1]) + """'""")
在示例中,您给出的部分[2]将始终返回时间。如果您的线条是一致的,您可以使用零件[2],但如果UUID以前的数据不同,则只需选择分割后的最后一个元素
答案 1 :(得分:-1)
string.split()是一个魔法,你不需要指定它将拆分的分隔符。
part =“339.00 2013-06-18 12:40:54.457 A4AB4CD2-016B-411E-8BA1-0000C592BF17”
part.split(); part.split(“”)#做同样的事。
['339.00','2013-06-18','12:40:54.457','A4AB4CD2-016B-411E-8BA1-0000C592BF17']
['339.00','','2013-06-18','12:40:54.457','A4AB4CD2-016B-411E-8BA1-0000C592BF17']
我的意见是使用str(part.split()[ - 1])。
关于UUID在转换为UUID时使用字符串转换,请参阅下面的参考。 (或者它可能导致问题)
uuid.UUID( “A4AB4CD2-016B-411E-8BA1-0000C592BF17”)
UUID( 'a4ab4cd2-016b-411E-8ba1-0000c592bf17')
STR(uuid.UUID( “A4AB4CD2-016B-411E-8BA1-0000C592BF17”))
'a4ab4cd2-016b-411E-8ba1-0000c592bf17'
所以它可以是这样的。
for fileLines中的行:
parts = line.split()
# Parse first two chunks
outputFile.write(""" WHERE tableID = '""" + str(uuid.UUID(parts[-1])) + """'""")