【发布时间】:2014-03-14 02:04:38
【问题描述】:
我有一个代码,它从网上获取数据,其中项目由数字 ID 引用,比较这些项目的数据,并根据某些标准构建项目 ID 号列表。我正在苦苦挣扎的是把这个数字列表变成一个名字列表。我有一个包含数字和相应名称的文本文件,但使用它时遇到问题,因为它包含多字名称,并且当我尝试使用 python 以任何方式解析文件时,它会在每行末尾保留 \n。文本文件如下所示:
number name\n
14 apple\n
27 anjou pear\n
36 asian pear\n
7645 langsat\n
我试过 split(),以及用几个不同的东西替换之间的空白,但无济于事。我之前问了一个问题,这个问题取得了很大进展,但仍然没有奏效。建议的两种方法是:
d = dict()
f=open('file.txt', 'r')
for line in f:
number, name = line.split(None,1)
d[number] = name
这几乎奏效了,但仍然给我留下了\n,所以如果我打电话给d['14'],我会得到'apple\n'。另一种方法是:
import re
f=open('file.txt', 'r')
fr=f.read()
r=re.findall("(\w+)\s+(.+)", fr)
这似乎已经摆脱了每个名称末尾的\n,但给我留下了一个问题,即每个数字名称组合都是一个条目的元组,所以如果我说r[1]我会得到('14', 'apple')。我真的不想在所有 ~8400 个条目上手动删除每个新行命令...
关于如何从这样的文件中获取给定数字的相应名称有什么建议吗?
【问题讨论】:
-
try:
number, name = line.strip().split(None,1)... 作为您的代码,但另外strip()将删除换行符。
标签: python regex parsing text python-3.x