从.csv文件中提取用户id号

2024-04-19 23:28:06 发布

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

我有一个包含用户信息的csv文件。文件中的示例如下。你知道吗

 "userType": "NORMAL",   "accountID": "J123456789"
 "userType": "NORMAL",   "accountID": "J987654321"
 "userType": "NORMAL",   "accountID": "C123456789"
 "userType": "NORMAL",   "accountID": "R987654321"

我想使用带有python3的regex获得id号。你知道吗

我使用的正则表达式是("accountID": ")\w+,它生成以下结果。你知道吗

"accountID": "J123456789
"accountID": "J987654321
"accountID": "C123456789
"accountID": "R987654321

期望的输出应该如下所示

J987654321
J987654321
C123456789
R987654321

Tags: 文件csv用户信息id示例python3regex
3条回答

Imho,这根本不需要任何进口:

with open('test.csv') as f:
    for line in f:
        print(line.strip()[-11:-1])

或者,如果帐户ID的长度确实不同,请使用:

        print(line.split('"')[-2])

在循环中。你知道吗

如果文件格式是固定的,请考虑自动检测方言:

import csv

with open('test.csv') as csvfile:
    dialect = csv.Sniffer().sniff(csvfile.read(1024))
    csvfile.seek(0)
    reader = csv.reader(csvfile, dialect)
    accounts = [row[2] for row in reader]

此代码将生成以下列表:

accounts
['J000025574', 'J000025620', 'C000025623', 'R000025624']

您可以使用下面的regex "(?:\"accountID\": \")(\S+)\",它只包含id,而忽略其余部分

import re

s = """"userType": "NORMAL",   "accountID": "J123456789"
 "userType": "NORMAL",   "accountID": "J987654321"
 "userType": "NORMAL",   "accountID": "C123456789"
 "userType": "NORMAL",   "accountID": "R987654321" """

print(re.findall("(?:\"accountID\": \")(\S+)\"",s))

结果:

['J123456789', 'J987654321', 'C123456789', 'R987654321']

相关问题 更多 >