python - Python,通过提取字符和数字子字符串来解析字符串
问题描述
我有一个字符串,由一些机器学习算法产生,通常由多行组成。在开头和结尾可能有一些不包含任何字符的行(空格除外),中间应该有 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']
推荐阅读
- brightway - 在 Brightway2 中处理具有重复名称的活动参数
- excel - Filter a table using an array
- sql - SQLite - 引用同一列的多个外键
- r - R程序中-pi和pi之间的循环残差的Hist
- python - Why python don't print after a time.sleep()?
- c# - Unable to resolve service for type 'Microsoft.AspNetCore.Identity.UserManager' while attempting to activate 'WebShop.Controllers.User.UserController'
- c++ - 如何使用 libcurl(在 C++ 中)正确设置多部分表单数据以上传二进制文件
- javascript - 从生成的 html 调用 .ts 文件中的函数
- swiftui - 如何调用 UIViewController 到 SwiftUI View
- javascript - Firebase 身份验证在重定向时不进行身份验证