我想从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,无法解析此文件结构。
如何分隔值并将其存储在列表中?
答案 0 :(得分:1)
如果我了解您的问题,您可以加载文件但不能解析它?
您可以将文件内容存储在变量中,然后在确定分隔符后使用split
方法对其进行拆分。
list_str = your_file_content.split("|")
它将返回一个列表,其中包含文件中所有不同的字符串。
此功能有一些示例: https://www.pythonforbeginners.com/dictionary/python-split
答案 1 :(得分:0)
CSV文件由包含字段的记录组成。字段分隔符通常是逗号(,
),但可以是任何字符,而记录分隔符通常位于行尾('\r\n'
)。在字段中嵌入分隔符(包括记录分隔符)通常需要将该字段括在引号中。
您的文件似乎包含一个记录,行尾嵌入字段中且没有引号:它不是CSV文件,不应是进程,而应是带有csv文件的工具。
只需阅读并在|
上拆分即可。