我在文件中有以下字符串:
736.199070736: LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0,
0x0075007f,
0x005500dd,
0x000a00f5)
从这些我想从“(”到“)”获取数据并使其成为一行。
输出应该在一行中,如:
(0, 0x0075007f, 0x005500dd, 0x000a00f5)
答案 0 :(得分:2)
如果你想要一行:
''.join(''.join(text.splitlines()).partition('(')[1:])
演示:
>>> text = '''\
... 736.199070736: LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0,
... 0x0075007f,
... 0x005500dd,
... 0x000a00f5)
... '''
>>> ''.join(''.join(text.splitlines()).partition('(')[1:])
'(0, 0x0075007f, 0x005500dd, 0x000a00f5)'
Bonus功能:如果将其传递给ast.literal_eval()
,则会得到一个带整数的Python结构:
>>> from ast import literal_eval
>>> literal_eval(''.join(''.join(text.splitlines()).partition('(')[1:]))
(0, 7667839, 5570781, 655605)
答案 1 :(得分:0)
您可以使用正则表达式:
import re
string = """736.199070736: LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0,
0x0075007f,
0x005500dd,
0x000a00f5)"""
result = re.search(r'\(.*\)', string) # matches anything between parenthesis
result.group()
'(0, 0x0075007f, 0x005500dd, 0x000a00f5)'
它为数据提供了一个字符串。