我想从具有这种格式的文件中读取:
胡扯 胡言乱语 更胡言乱语 胡言乱语(总共约10行垃圾) 1姓3 9,50 22 38 2姓中间名1 6,50 22 38 38
我想要的是用粗体值填充字典,关键字是行的第一个数字,如下所示:
dict ={ 1:'lastname',‘6.50’,'9,50',2:'lastname',‘6.50’,'6.50'}
到目前为止,我已经做了这个:
list=[0,0,0]
dict={}
def process(line):
words = line.split()
list[0] = words[1]
list[1] = words[2]
list[2] = words[4]
dict[int(words[0])] = list
with open('fisierIntrare.txt') as file:
for i in xrange(10):
file.next()
for line in file:
process(line)
list=[0,0,0]
print dict它基本上完成了我想要做的事情,但是它严重依赖于文件的某种格式,并且不能很好地将名字和middlename连接在一个字符串中,它们被绑定成这样: firstname-middlename。在行的第一个数和下一个数字之间只有名字:
一个姓姓三..。
2姓名中间名2.
3姓、名、中名、下名、名、名.
另外,如何将每个列表中的最后一个值设置为浮点数?即'9,50‘-> 9.5,并使字典如下:
dict ={ 1:'lastname',‘dict’,9.5,2:'lastname',‘dict’,6.5}
那么,有什么想法可以让我的代码像我所希望的那样工作呢?
编辑:胡言乱语并不完全是胡言乱语,它可以是其他名字或数字,只是那些我不想提取的名字或数字。用正则表达式进行搜索对我来说不是个好主意。例如,对于此文件:
约翰 约翰·史密斯 1 9.56 (共约10行垃圾) 1约翰史密斯3 9,50 22 38 38雅各布史密斯 2约翰史密斯雅各布1 6,50 22 38
我认为正则表达式将返回文件中的所有名称,而我只想要在这里显示的名字。我所寻找的单词是独特的,更多的是因为它们在文件中的位置,而不是某种模式。
发布于 2015-04-12 19:37:34
首先:
Regex不太容易,但非常强大。我认为这是唯一能控制住这里的东西的方法。如果需要的话,你可以单独问一些问题。例如,以下模式将工作并匹配您想要的每一行(您甚至不需要跳过前10行),尽管您需要做更多的工作才能将数据输出出来:
r'^\d(\s[a-zA-Z])+'https://stackoverflow.com/questions/29593664
复制相似问题