import re
splitRegex = r"(Personal Info|Personal|Personal Information)|(Work Experience|Work)|(Education|School|Certificates)"
text = "Personal Info\nText\nText\nText\nText\nWork Experience\nText\nText\nText\nText\nEducation\nText\nText\nText\nText\nText"
x = [tuple(i.splitlines()) for i in re.split(splitRegex, text) if i != ""]
d = dict([("".join(x[i]), x[i + 1]) for i in range(0, len(x) // 2, 2)])
print(d)
在上面的示例代码中,我想根据标题拆分文本。我想通过正则表达式确定这些标题(因为可能有同义词)re.split
但是通常返回NoneType。这显然会导致错误。如果我添加一个If条件来检查我是否不是None
,那么错误就会消失,但字典最终会丢失大量数据。
有人知道解决这个问题的方法吗?或者知道实现同样的事情的方法吗?
请记住,以上只是一个例子。我需要使用这个为简历/简历,因此布局和标题可以略有不同,这取决于使用的简历。
对于所有不匹配的组,您将得到None
,因为re.split()
在结果列表中包括所有捕获组。
您应该将每个备选方案列表放在一个非捕获组中,然后将所有备选方案都放在一个捕获组中,这样您就可以得到匹配的标签。
splitRegex = r"((?:Personal Info|Personal|Personal Information)|(?:Work Experience|Work)|(?:Education|School|Certificates))"
您可以在循环级别删除结果中的NoneType
:
x = [tuple(i.splitlines()) for i in re.split(splitRegex, text) if (i != "" and i != None)]
这样x
将类似于:
[('Personal Info',), ('', 'Text', 'Text', 'Text', 'Text'),
('Work Experience',), ('', 'Text', 'Text', 'Text', 'Text'),
('Education',), ('', 'Text', 'Text', 'Text', 'Text', 'Text')]
这可能会让你的判决构造函数高兴。
如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(
Java官方文档说明: 例如,字符串使用以下表达式Regex Result生成以下结果: 这就是我需要它工作的方式。然而,如果我运行这个: 它打印: 这与我的预期相去甚远: 为什么会这样?
问题内容: 我不明白这行的含义: 其中 参数 是字符串 为什么通常要对python字符串使用和运算符? 问题答案: 假设您使用的是的值,但如果说的是值,那么您希望使用一个空字符串代替。您一般会做什么? 这就是表达的意思。首先,你应该明白与运营商的作用: 返回如果是,否则返回。 返回如果是,否则返回。 所以,你的表情: 实际上等效于: 在以下情况下如何计算表达式: 评估为: result = (”
这是作为输入的字符串,但我只需要每一列,从第二列开始,即: 1(第二行) 2和1(第三行) 1(第五排) 这个在可能有多少行或多少列(列被一个空格分割)方面没有固定的大小。 我认为通过使用以下工具,这相当容易: 我需要第一列之后的每一列。我仍在学习regex,但似乎找不到一个好的解决方案。我知道关于拆分的“\\r?\\n”和“”,但不知道如何将两者连接起来以获取每一列。非常感谢您的帮助:) 另一个
我有一份清单 我如何迭代列表并解析所有字符串,以便在迭代结束时我可以有一个包含如下内容的字符串
我正在尝试找到正则表达式以获得字符串的最后一个字符: 通过正则表达式查找最后一个字符应返回“F”。