需要使用Python去掉带有引号的混乱数据集

2024-06-25 22:38:48 发布

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

我对Python的解析还是相当陌生的,所以我需要一些关于连接的帮助。我有一个.asc文件和一个.dat文件,它们的结构如下:

sta cnt assgnum cty pdpass  ptype   patnum
"IL"    ""  1   "Chicago"   10030271    "0" 3930271
"PA"    ""  1   "Bedford"   10156902    "0" 3930272
"MO"    ""  1   "St. Louis" 10112031    "0" 3930273
"IL"    ""  1   "Chicago"   10030276    "0" 3930276

而.dat是这样的:

cod cod_fix pdpass  standard_name   uspto_assignee
"US institute"  32  12832332    "& AEROSPACE FOUND" 835951
"02 US corporation" "No change" 11624193    "& COMMUNICATIONS"  721167
"03 Foreign corp, incl. state-owned"    "No change" 12549858    "& DESIGN LTD"  806186
"03 Foreign corp, incl. state-owned"    "No change" 11170486    "& FR"  182855

很难看。因此,我尝试将这两个文件分别保存为.csv文件,并去掉它们的所有引号(在sta、cty、ptype、cod等…)

最终目标是将两个数据集合并到同一个唯一标识符pdpass)下,但首先需要剥离它们。你知道吗

我的剥离代码是这样的:

import csv
import re

with open("C:\\......FILE.asc", "r") as fin:
    with open("C:\.....FILE.csv", "w") as fout:

        for line in fin:
            newline = map(str.strip, line.split('"'))
            csv.writer(fout).writerow(newline)

这给了我一些格式不稳定的结果。不太清楚该往哪里走。有人吗?你知道吗


Tags: 文件csvnochangeildatcodus
2条回答

这些文件看起来是分开的。如果是这样,只需使用pandas库将其作为csv读取,并使用tab作为分隔符。你知道吗

import pandas as pd
pd.read_csv("C:\\......FILE.asc", sep = '\t')

然后,您可以通过在每一行上使用map或apply来清除引号。你知道吗

很晚了(在我的时区)。这段代码表示读取两个文件的基本方法,以及在pdpass变量上合并它们的基本方法,假设输入文件是以制表符分隔的。(如果它们不是制表符分隔的,我可以提供其他代码。)

差点忘了!:我更改了其中一个文件中的一些pdpass值,以便其中的记录将“连接”到另一个文件中的某些相应记录。你知道吗

import csv

complete = {}
with open('FILE.csv') as csvfile:
    reader = csv.DictReader(csvfile, delimiter='\t')
    for row in reader:
        complete[row['pdpass']] = [row[_] for _ in ['sta', 'cnt', 'assgnum', 'cty', 'ptype', 'patnum']]

with open('FILE.dat') as datfile:
    reader = csv.DictReader(datfile, delimiter='\t')
    for row in reader:
        complete[row['pdpass']].extend(row[_] for _ in ['cod', 'cod_fix', 'standard_name', 'uspto_assignee'])

for pdpass in complete:
    print (pdpass, complete[pdpass])

结果如下:

10030276 ['IL', '', '1', 'Chicago', '0', '3930276', '02 US corporation', 'No change', '& COMMUNICATIONS', '721167']
10156902 ['PA', '', '1', 'Bedford', '0', '3930272', '03 Foreign corp, incl. state-owned', 'No change', '& FR', '182855']
10030271 ['IL', '', '1', 'Chicago', '0', '3930271', '03 Foreign corp, incl. state-owned', 'No change', '& DESIGN LTD', '806186']
10112031 ['MO', '', '1', 'St. Louis', '0', '3930273', 'US institute', '32', '& AEROSPACE FOUND', '835951']

输入文件:

你知道吗文件.csv你知道吗

sta cnt assgnum cty pdpass  ptype   patnum
"IL"    ""  1   "Chicago"   10030271    "0" 3930271
"PA"    ""  1   "Bedford"   10156902    "0" 3930272
"MO"    ""  1   "St. Louis" 10112031    "0" 3930273
"IL"    ""  1   "Chicago"   10030276    "0" 3930276

你知道吗文件.dat你知道吗

cod cod_fix pdpass  standard_name   uspto_assignee
"US institute"  32  10112031    "& AEROSPACE FOUND" 835951
"02 US corporation" "No change" 10030276    "& COMMUNICATIONS"  721167
"03 Foreign corp, incl. state-owned"    "No change" 10030271    "& DESIGN LTD"  806186
"03 Foreign corp, incl. state-owned"    "No change" 10156902    "& FR"  182855

相关问题 更多 >