在Python中逐行修改字符串
我是Python新手,如果问题很简单,我很抱歉。我有一个名为decShow的字符串,其中包含以下信息:在Python中逐行修改字符串,python,string,loops,Python,String,Loops,我是Python新手,如果问题很简单,我很抱歉。我有一个名为decShow的字符串,其中包含以下信息: 00:00:00,000 -> 94 FB 00:00:00,100 -> 94 FA 00:00:00,200 -> 94 F9 00:00:00,300 -> 94 F8 00:00:00,400 -> 94 F7 00:00:00,500 -> 94 F6 00:00:00,600 -> 94 F5 00:00:00,700 -&
00:00:00,000 -> 94 FB
00:00:00,100 -> 94 FA
00:00:00,200 -> 94 F9
00:00:00,300 -> 94 F8
00:00:00,400 -> 94 F7
00:00:00,500 -> 94 F6
00:00:00,600 -> 94 F5
00:00:00,700 -> 94 F4
00:00:00,800 -> 94 F3
00:00:00,900 -> 94 F2
00:00:01,000 -> 94 F1
00:00:01,100 -> 94 20
HH:MM:SS,sss -> Hex Code
我想逐行修改这个字符串,创建另一个类似这样的字符串
00000000: Hex Code
其中,零是十六进制中每行分、秒和毫秒转换为毫秒所得的十六进制值。数学不是问题,问题是循环。在decShow中尝试使用for行后,我没有得到预期的结果
我怎样才能有效地做到这一点
编辑:澄清
我有一个字符串:
00:00:00,000 -> 94 FB
00:00:00,100 -> 94 FA
00:00:00,200 -> 94 F9
00:00:00,300 -> 94 F8
我想把它转换成这样:
00000000: 94 FB
00000064: 94 FA
000000C8: 94 F9
0000012C: 94 F8
我在decShow中的行的下尝试了一个循环,但它似乎只适用于。decShow中的行的readlines()
将decShow
视为字符列表。您希望有一个decShow
中所有行的列表,可以使用decShow.split(“\n”)
轻松访问该列表,然后为decShow中的行创建。如果decShow
是str,则split(\n”)
将为每行提供decShow
中单个行的值,然后,您的for
循环将在字符上循环,而不是在行上循环。要在由字符分隔的行上循环,请尝试使用:
您需要使用str.splitlines()
或.split('\n')
将字符串拆分为行,然后去掉不需要的字符
x = "\n".join([line.strip("->").strip(",") for line in decShow.splitlines()])
您可以使用decShow.split(“\n”)
,它将通过新行字符将字符串拆分为多个字符串。您也可以使用相同的东西,例如,如果您想用逗号分隔第一部分decShow.split(“,”)
另外,我认为对于这个问题,你也需要做一些子字符串,这取决于你怎么做。你可以在其他地方读到更多关于这方面的信息
输出
000000000: 94 FB
000000064: 94 FA
0000000C8: 94 F9
00000012C: 94 F8
000000190: 94 F7
0000001F4: 94 F6
000000258: 94 F5
0000002BC: 94 F4
000000320: 94 F3
000000384: 94 F2
000001000: 94 F1
000001064: 94 20
请提供一个,不清楚您尝试了什么,结果是什么,或者它们与您期望的有什么不同。请粘贴您的hex
转换代码,我刚刚添加了更多信息。谢谢。可能重复的(str.splitlines)[在这里会更健壮。所有答案都很有用,但这个解决方案是目前为止最有效的。非常感谢。这真的帮助了我,你让我学到了新东西。
>>> import re
>>> tup_lst = [re.split(r' -> |,', l.strip()) for l in decShow.splitlines()]
>>> new_data = '\n'.join([a.replace(':', '')+'%03X: ' % int(b)+c for a,b,c in tup_lst])
>>> print (new_data)
000000000: 94 FB
000000064: 94 FA
0000000C8: 94 F9
00000012C: 94 F8
000000190: 94 F7
0000001F4: 94 F6
000000258: 94 F5
0000002BC: 94 F4
000000320: 94 F3
000000384: 94 F2
000001000: 94 F1
000001064: 94 20