使用pandas.read_csv在python中从具有分隔符的csv中读取内容

时间:2019-02-13 14:28:35

标签: python python-3.x

我想从csv文件中读取内容。下面是文件的格式:

SOURCE_TYPE|SOURCE_QUERY|TARGET_QUERY
HIVE|SELECT *
FROM (SELECT *,ROW_NUMBER() OVER (PARTITION BY USR_ID
       ORDER BY snap_logmarker DESC ) AS row_num  
       FROM   ( SELECT USR_ID,snap_logmarker
         FROM  ARCHIVE_db.a_cust_auth  
         WHERE (CONCAT(snapshot_year_month, snapshot_day) = '20171231')   
         UNION ALL   
         SELECT USR_ID,snap_logmarker FROM ( SELECT *,ROW_NUMBER() OVER (PARTITION BY USR_ID ORDER BY snap_logmarker desc,snap_intentseq desc ) AS row_num 
         FROM staging_db.a_cust_auth   
         WHERE snapshot_year_month ='201801') C
                                WHERE C.row_num = 1
                   ) B
) A 
 WHERE A.row_num = 1
|
select * from db.cust_auth where concat(snapshot_year_month,snapshot_day)='20180131'

我要在字符串列表中分隔所有值,并且使用的定界符为“ |”即

SOURCE_TYPE =嗨

SOURCE_QUERY =完成子查询直到|分隔符

TARGET_QUERY =上次选择查询

使用pandas.read_csv,无法解析此文件结构。

如何分隔值并将其存储在列表中?

2 个答案:

答案 0 :(得分:1)

如果我了解您的问题,您可以加载文件但不能解析它? 您可以将文件内容存储在变量中,然后在确定分隔符后使用split方法对其进行拆分。

list_str = your_file_content.split("|")

它将返回一个列表,其中包含文件中所有不同的字符串。

此功能有一些示例: https://www.pythonforbeginners.com/dictionary/python-split

答案 1 :(得分:0)

CSV文件由包含字段的记录组成。字段分隔符通常是逗号(,),但可以是任何字符,而记录分隔符通常位于行尾('\r\n')。在字段中嵌入分隔符(包括记录分隔符)通常需要将该字段括在引号中。

您的文件似乎包含一个记录,行尾嵌入字段中且没有引号:它不是CSV文件,不应是进程,而应是带有csv文件的工具。

只需阅读并在|上拆分即可。