Python,通过提取字符和数字子串来解析字符串
Python, parse string by extracting characters and digits substring
我有一个字符串,由一些机器学习算法产生,通常由多行组成。在开头和结尾可以有一些行不包含任何字符(空格除外),中间应该有 2 行,每行包含一个单词,后跟一些数字和(有时)其他字符。
像这样
first_word 3 5 7 @ 4
second_word 4 5 67| 5 [
我需要提取 2 个单词和数字字符。
我可以通过执行以下操作来消除空行:
lines_list = initial_string.split("\n")
for line in lines_list:
if len(line) > 0 and not line.isspace():
print(line)
但现在我想知道:
- 如果有更健壮、通用的方法
- 如何通过提取单词和数字(并丢弃数字之间混合的其他字符,如果有的话)来解析剩余的 2 条中心线中的每一条)
我想 reg 表达式可能会有用,但我从未真正使用过它们,所以我现在有点挣扎
我会在这里使用 re.findall:
inp = '''first_word 3 5 7 @ 4
second_word 4 5 67| 5 ['''
matches = re.findall(r'\w+', inp)
print(matches) # ['first_word', '3', '5', '7', '4', 'second_word', '4', '5', '67', '5']
如果你想单独处理每一行,那么只需在 CR?LF 上拆分输入并使用相同的方法:
inp = '''first_word 3 5 7 @ 4
second_word 4 5 67| 5 ['''
lines = inp.split('\n')
for line in lines:
matches = re.findall(r'\w+', line)
print(matches)
这会打印:
['first_word', '3', '5', '7', '4']
['second_word', '4', '5', '67', '5']
我有一个字符串,由一些机器学习算法产生,通常由多行组成。在开头和结尾可以有一些行不包含任何字符(空格除外),中间应该有 2 行,每行包含一个单词,后跟一些数字和(有时)其他字符。
像这样
first_word 3 5 7 @ 4
second_word 4 5 67| 5 [
我需要提取 2 个单词和数字字符。
我可以通过执行以下操作来消除空行:
lines_list = initial_string.split("\n")
for line in lines_list:
if len(line) > 0 and not line.isspace():
print(line)
但现在我想知道:
- 如果有更健壮、通用的方法
- 如何通过提取单词和数字(并丢弃数字之间混合的其他字符,如果有的话)来解析剩余的 2 条中心线中的每一条)
我想 reg 表达式可能会有用,但我从未真正使用过它们,所以我现在有点挣扎
我会在这里使用 re.findall:
inp = '''first_word 3 5 7 @ 4
second_word 4 5 67| 5 ['''
matches = re.findall(r'\w+', inp)
print(matches) # ['first_word', '3', '5', '7', '4', 'second_word', '4', '5', '67', '5']
如果你想单独处理每一行,那么只需在 CR?LF 上拆分输入并使用相同的方法:
inp = '''first_word 3 5 7 @ 4
second_word 4 5 67| 5 ['''
lines = inp.split('\n')
for line in lines:
matches = re.findall(r'\w+', line)
print(matches)
这会打印:
['first_word', '3', '5', '7', '4']
['second_word', '4', '5', '67', '5']