在..,python的条件下,重放从其他文件获取的列中的数据

2024-09-29 05:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的大型数据集中,有一列的名称如下:

主文件:

1, NAME1
2, NAME2
3, NAME2
   ...

我所需要的是,创建第三列与姓氏,与一些条件。 我有两个单字文本文件(姓氏1.txt,姓氏2.txt)。我需要创建一个条件,我可以用它来创建第三列,例如:

if NAME1 in 'SURNAME1.txt':
then create field in 3rd main file where will be written 'SURNAME1'

现在我可以用这个代码检查我的名字在哪里:

if ('NAME1') in open('SURNAME1.txt').read():
print ("true")

我需要在主文件中接收的输出:

1, NAME1, SURNAME1
2, NAME2, SURNAME2
3, NAME2, SURNAME2

谢谢你的建议


Tags: 文件数据intxt名称if条件单字
1条回答
网友
1楼 · 发布于 2024-09-29 05:27:59
class Forenames(dict):
    def __missing__ (self, key):
        return ''

from collections import defaultdict

surnames = defaultdict(list)
for fileName in ['surname1.txt', 'surname2.txt']:
    surname = fileName[:-4]
    with open(fileName) as names:
        for line in names:
            surnames[surname].append(line.strip())

forenames = Forenames()
for surname in surnames:
    for forename in surnames[surname]:
        if forenames[forename]:
            raise RuntimeError('forename previously found')
        else:
            forenames[forename] = surname

with open('names.txt') as names:
    for line in names:
        number, value = line.strip().split(', ')
        surname = forenames[value]
        print (number, value, surname)

结果:

1 Bill 
2 Egon surname2
3 Cynthia surname1
4 Colin surname2
5 James surname2

。。。将此内容用于names.txt

1, Bill
2, Egon
3, Cynthia
4, Colin
5, James

。。。这是为了surname1.txt

John
Mary
Cynthia

。。。这就是surname2.txt

Egon
Colin
James

首先,代码生成一个对应于每个“姓”的名字字典。然后它把这本词典翻成一本与名字对应的姓氏词典。后一个字典的构造是为了用空白字符串替换姓氏缺少的值。最后,读取并解析文件names.txt,并在第二个字典中查找名字

相关问题 更多 >