我有一个 txt 文件,里面有州名和大学名。我已经使用 pandas.read_table() 将其读入数据帧。然后我通过 iterrows() 遍历它,并且在每个项目上我只想得到州和大学。可以通过 [edit] 后缀检测状态。然后在其他行中跟随大学,直到出现下一个州。这意味着另一个名称后跟“[edit]”。数据框的视图如下所示:
如图所示,第 0 行中的阿拉巴马州是一个州。第 1 行到第 8 行的大学属于阿拉巴马州,直到第 9 行出现,这是另一个州。第 10 行属于第 9 行的阿拉斯加州。整个数据框具有这种结构。我正在尝试清理它并返回另一个具有此结构的数据框:一列包含州名和大学名,但没有 [] 和 () 之后的部分。然后它看起来像下面这样:
阿拉巴马州
赤褐色
佛罗伦萨
杰克逊维尔
一些记录带有“.”。或名称中的空格。我已经编写了以下正则表达式来获取它们,但结果也给了我“编辑”、“奥本大学”等。换句话说,它返回匹配的任何内容,而不仅仅是第一部分。
代码如下:我已将 txt 文件读入名为 df_university_town 的数据帧中。然后我应用正则表达式如下:
import re
pattern = re.compile(r'([a-zA-Z]+[\.\s]?[a-zA-Z]+)(\w?)')
for key, item in df_university_town.iteritems():
matches = pattern.finditer(str(item))
for match in matches:
print(match.group(1))
这是我得到的结果:
如您所见,最终结果中的“编辑”和“奥本大学”是额外的。我使用了不同的方法并尝试了 match() ,但这也没有帮助。基本上,当我到达“[”或“(”时,搜索不应继续。我不知道我还需要做什么。我感谢任何帮助或建议。
非常感谢您的帮助和您投入的时间。
largeQ
相关分类