在Python中逐行修改字符串

时间:2018-07-20 13:11:49

标签: 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 -> 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

其中,零是十六进制值,是由每行的分钟,秒和毫秒转换为十六进制毫秒所产生的十六进制值。数学不是问题,问题是循环。尝试使用for line in 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

我想将其转换为:

00000000: 94 FB
00000064: 94 FA
000000C8: 94 F9
0000012C: 94 F8

我在for line in decShow下尝试了一个循环,但似乎只对.readlines()有用

5 个答案:

答案 0 :(得分:0)

std::unordered_mapfor line in decShow视为字符列表。您想要一个decShow中所有行的列表,使用decShow可以轻松访问这些行,然后decShow.split("\n")将为for line in decShow.split("\n")中的每个行赋予{ {1}}。

答案 1 :(得分:0)

如果decShowstr,则您的for循环将遍历字符,而不是行。为了循环用newline字符分隔的行,请尝试使用str.splitlines

for line in decShow.splitlines():
    // convert line to your Hex representation here

答案 2 :(得分:0)

您将需要使用str.splitlines().split('\n')将字符串分割成几行,然后去除不需要的字符。

x = "\n".join([line.strip("->").strip(",") for line in decShow.splitlines()])

答案 3 :(得分:0)

您可以使用decShow.split("\n"),它将通过换行符将字符串分成多个字符串。例如,如果您想用逗号decShow.split(",")

分割第一部分,也可以使用相同的内容

此外,我认为对于这个问题,您还需要根据处理方式来做一些子字符串。您可以在其他地方阅读有关此内容的更多信息...

How to display the first few characters of a string in Python?

答案 4 :(得分:0)

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