pysftp 读取 csv 文件有一个 etra 引用
Posted
技术标签:
【中文标题】pysftp 读取 csv 文件有一个 etra 引用【英文标题】:pysftp read csv file has an etra quote 【发布时间】:2021-10-15 21:54:04 【问题描述】:我正在尝试将一个 csv 文件读入一个数组,但是当我读到它时,我得到的是这个额外的引号而不是一行值。
with pysftp.Connection(host, username=username, password=pwd) as sftp:
with sftp.cd('/DailyFiles'):
files = sftp.listdir()
for f in files:
if f.startswith('POS_ROBO_'):
with sftp.open(f, 'r') as fl:
# csv_file = sftp.open(f)
# csvreal = pd.read_csv(csv_file)
# Data from SSH is binary, we need to decode to string
content = [line for line in fl]
break
这是content
的样子:
['"Date","AccountVendor","AccountNumber","AccountType","BalanceType","SecurityType","SecuritySubType","ShortClass","LongClass","Symbol","CUSIP","Description","QTY","Price","Amount"\r\n', '"2021-07-01","???TD","942735452","1","SE","C","","Frgn Stk","Foreign Stock","SPDW","TD:17:","SPDR INDEX SHARES FUNDS PORTFO LIO DEVLPD ETF","11.00","36.91","406.01"\r\n']
【问题讨论】:
请注意,我不想为此使用 pandas 看起来你有两行数据,一个标题和值。您希望标头成为数组的一部分还是只是数据的一部分? 我还希望标题成为数据的一部分。谢谢! 【参考方案1】:这只是一个两行的标准 CSV 文件。 Python 使用外部 '
字符来表示字符串,而内部 "
是数据的一部分。它们是 CSV 文件引用单个单元格的标准方式,以便单元格中的逗号不会与用作单元格分隔符的逗号混淆。您可以使用csv
转换为数组
import csv
content = [
'"Date","AccountVendor","AccountNumber","AccountType","BalanceType","SecurityType","SecuritySubType","ShortClass","LongClass","Symbol","CUSIP","Description","QTY","Price","Amount"\r\n',
'"2021-07-01","???TD","942735452","1","SE","C","","Frgn Stk","Foreign Stock","SPDW","TD:17:","SPDR INDEX SHARES FUNDS PORTFO LIO DEVLPD ETF","11.00","36.91","406.01"\r\n']
array = csv.reader(content)
for row in array:
print(row)
结果
['Date', 'AccountVendor', 'AccountNumber', 'AccountType', 'BalanceType', 'SecurityType', 'SecuritySubType', 'ShortClass', 'LongClass', 'Symbol', 'CUSIP', 'Description', 'QTY', 'Price', 'Amount']
['2021-07-01', '???TD', '942735452', '1', 'SE', 'C', '', 'Frgn Stk', 'Foreign Stock', 'SPDW', 'TD:17:', 'SPDR INDEX SHARES FUNDS PORTFO LIO DEVLPD ETF', '11.00', '36.91', '406.01']
【讨论】:
使用“csv reader”有什么问题?如果您想读取 CSV 文件,则需要它。像csv.reader(fl)
一样使用它。您的问题与 pysftp 无关。如果您以相同的方式读取本地文件,您会得到相同的结果。
我没有投反对票,所以不确定。你不想使用csv.reader
?那么这肯定不是答案!
我在没有 ftp 代码的情况下编写了这个答案以保持其通用性。我也可以完全跳过构建content
并执行array = list(csv.reader(fl))
。以上是关于pysftp 读取 csv 文件有一个 etra 引用的主要内容,如果未能解决你的问题,请参考以下文章
python 读取多个csv文件中某一列,并生成一个新csv文件
如何使用 ssh-ed25519 作为 pysftp 的密钥来设置主机密钥文件