Python从字符串转换UUID

时间:2014-10-20 15:29:16

标签: python python-3.x uuid

我有一个包含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

2 个答案:

答案 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])) + """'""")