如何将在多行中找到的数字存储在csv文件中

时间:2020-05-22 16:06:49

标签: python regex csv

我有一个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分钟

3 个答案:

答案 0 :(得分:0)

最好的方法是使用熊猫

df = pd.read_csv("path/to/file.csv")

https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

它还使您可以轻松地操纵行以及更多其他内容。网上有很多教程等。

答案 1 :(得分:0)

有很多方法可以做到这一点。

1

熊猫提供了一个非常优雅的解决方案。您可以阅读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']提取该列并将其转换为列表。

2

如果您不想使用熊猫,这是另一种方法。

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.readercsv.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)