Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中逐行修改字符串_Python_String_Loops - Fatal编程技术网

在Python中逐行修改字符串

在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 -&

我是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 -> 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