python - 将csv文件传递给Python中的函数的问题
问题描述
我终于为一个我无法完成的小项目寻求帮助。
我在 Linux Ubuntu 16.04 和 Python 2.7.12 或 Python 3.5.2 上工作
这很简单:
我有一个包含数千个这种格式的比特币地址的 csv 文件:
12xApR3LKKobfMtPyorsyfpdQt51C1242P
1MqadAMYmwqvJPEYR5UhWHGhupuiXdQ5Pg
1P66WyUGcuPGTKH1ECwmrXoASPR1WP5dfa
1LWb1YtSoQ7m8RreJAEyasHK61jsQqMHGD
1BZnbtBXAKtjrA1suinXrf1s6pjhjPA7oG
166goQjUX3Lh3aN9SEXgcRwpPSBoJWtdDu
1C3pvanq8ZHDGrjfxQU7x8D13DS7d9XjLF
我想使用这个确实有效的函数将它们转换为 HASH160:
adr160 = base58.b58decode_check(adr58).encode('hex')[2:]
并将结果以相同的格式写入另一个文本或 csv 文件。
88374DB2A14DEA2925B19AF4D4AD84EB94FDE409
156732EBD650DF4AC212F5C8DE5DFBA4AE588B59
E4928C9EFDE55B17603D9539FB649D9457C293EB
...
我尝试了很多事情,但每次都有问题阻止我成功。
这是我最后的两次尝试:
import base58
import csv
adr58 =''
with open('sample.csv', 'rb') as csvfile:
adr58 = csv.reader(csvfile)
adr160 = base58.b58decode_check(adr58).encode('hex')[2:]
with open("Output.txt", "a+") as text_file:
text_file.write(adr160)
结果 :
" AttributeError: '_csv.reader' object has no attribute 'rstrip' "
第二次尝试是:
import base58
import pandas as pd
adr58 = pd.read_csv('sample.csv')
def convert(adr58):
print ("the address is: ")
adr160 = base58.b58decode_check(adr58).encode('hex')[2:]
f = open("hashed.txt", "w")
f.write(adr160)
f.close()
convert(adr58)
结果 :
" AttributeError: 'DataFrame' object has no attribute 'rstrip' "
我怎样才能以简单的方式做到这一点?我在这里完全不知所措。
提前感谢您的帮助。
解决方案
您必须遍历 DataFrame 的每行值,而不是 DataFrame 本身:
import base58
import pandas as pd
df= pd.read_csv('sample.csv')
def convert(adr58):
adr58_list = []
for i in range(len(df)):
print ("the address is: ", df.iloc[:,i])
adr58_list.append(base58.b58decode_check(df.iloc[:,i]).encode('hex')[2:])
odf = pd.DataFrame()
odf['column_name'] = adr58_list
odf.to_csv('hashed.csv', index = False)
convert(df)
推荐阅读
- azure - IOT 集线器连接字符串 - Azure 数字孪生
- kotlin - 不清楚 sumBy 块中的参数如何工作 (Kotlin)
- angular - 带有消息的Angular 8拦截重定向
- powershell - 带有字符参数的 Powershell -invokesql
- mysql - NodeJS AWS Lambda:连接丢失:服务器关闭了连接
- cypress - Cy.request() 无故超时
- oop - 动态创建对象并通过父类访问
- liquibase - 雪花的 Liquibase 数据库更改日志
- java - Java,无法使正则表达式工作
- swift - 快速更改消息 UIAlertController