我是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()
有用
答案 0 :(得分:0)
std::unordered_map
将for line in decShow
视为字符列表。您想要一个decShow
中所有行的列表,使用decShow
可以轻松访问这些行,然后decShow.split("\n")
将为for line in decShow.split("\n")
中的每个行赋予{ {1}}。
答案 1 :(得分:0)
如果decShow
是str
,则您的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