gpt4 book ai didi

python - 从文件中读取特定的单词和值并将它们存储在字典中

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:23:24 25 4
gpt4 key购买 nike

我想从具有这种格式的文件中读取:

gibberish

ssome gibberish

more giberish

gibberish (about 10 lines of garbage in total)

1 lastname firstname 3 9,50 22 38 38 giberish gibberish giberish

2 lastname firstname middlename 1 6,50 22 38 38 giberish giberish gibberish

我想要的是用粗体值填充字典,键是行的第一个数字,如下所示:

dict = { 1: ['lastname', 'firstname', '9,50'], 2: ['lastname', 'firstname middlename', '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

它基本上完成了我想要它做的事情,但是它严重依赖于某种格式的文件并且不能很好地将名字与中间名连接在一个字符串中,除非它们像这样绑定(bind):firstname-middlename .事情是在第一个数字和下一个数字之间只有名字:

1 姓氏 名字 3...

2 姓氏 名字 中间名 2...

3 lastname fisrtname middlename nextname morename namename 1...

另外,如何将每个列表中的最后一个值设为 float ?即 '9,50' -> 9.5 并像这样制作字典:

dict = { 1: ['lastname', 'firstname', 9.5], 2: ['lastname', 'firstname middlename', 6.5]}

那么,有什么想法可以让我的代码按我想要的方式工作吗?

编辑:乱码并不完全是乱码,它可以是其他名称或数字,只是我不想提取的那些。按正则表达式搜索对我来说不是一个好主意。例如这个文件:

John

John Smith

1

9.56 (about 10 lines of garbage in total)

1 John Smith 3 9,50 22 38 38 Jacob Smith John

2 John Smith Jacob 1 6,50 22 38 38 Peter Jack John

我认为正则表达式会返回文件中的所有名称,而我只需要此处加粗的名称。我寻找的词的独特之处在于它们在文件中的位置,而不是特定的模式。

最佳答案

对于初学者:

  1. 创建一个循环,读取并处理每一行。
  2. 在该循环中评估它是否与您想要的格式匹配。为此可以使用正则表达式 (Regex)。
  3. 如果以上为真,获取它的数据。我也会在这里使用正则表达式。
  4. 必要时清理它。

正则表达式不是太简单但非常强大。我认为这是让你在这里拥有的东西得到控制的唯一方法。如果需要,您可以就此提出单独的问题。例如,以下模式 可以工作并匹配您想要的每一行(您甚至不需要跳过前 10 行),尽管您需要做更多的工作才能从中获取数据:

r'^\d(\s[a-zA-Z])+'

关于python - 从文件中读取特定的单词和值并将它们存储在字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com