我有一个csv文件,该文件在每行中存储以下信息;名称,电话号码,上课时间,上课时间。我正在尝试仅将csv文件每一行中的电话号码存储到列表中。我目前正在尝试使用正则表达式使其正常工作,但是,如果有更好的建议,我会非常高兴。我对python编程比较陌生,因此任何其他建议都将不胜感激。
'''
def get_numbers():
file = open("students.csv")
regex = r"(\d+)"
for row in file:
if row:
result = re.search(regex, row)
print(result[0])
'''
这是csv文件中每一行的样例:
James Example,611-544-3091,8:00 pm,1hr
Carl Example,900-122-818,12:15 pm,30分钟
答案 0 :(得分:0)
最好的方法是使用熊猫
df = pd.read_csv("path/to/file.csv")
https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html
它还使您可以轻松地操纵行以及更多其他内容。网上有很多教程等。
答案 1 :(得分:0)
有很多方法可以做到这一点。
熊猫提供了一个非常优雅的解决方案。您可以阅读csv文件,并仅提取电话号码。这是方法。
import pandas as pd
df = pd.read_csv('file.csv', names=['name', 'phone number', 'class time', 'duration'])
phno = df['Phone number'].tolist()
这本质上是做的,它将全部数据放入表中。文件的每一行对应于一行,一行中的每一条目对应于一列条目。使用read_csv
指令将其放入表格后,即可提取任何列。您需要输入“电话号码”列,因此您可以使用df['Phone Number']
提取该列并将其转换为列表。
如果您不想使用熊猫,这是另一种方法。
for row in file:
phno = row.split(',')[1]
print(phno)
#or append it to some master list if you wish
答案 2 :(得分:0)
Python标准库有一个csv模块,正是为了这个目的;您可以使用csv.reader或csv.DictReader:
import csv
def get_numbers():
with open("students.csv") as fh:
for row in csv.reader(fh):
if not row:
# row is empty; skip
continue
# unpack the row into four variables
name, number, time, duration = row
print(number)