如何将由新行分隔的文本文件转换为csv文件。
文本文件示例
/themes/modern/user_style.php?user_colors[bg_color]="</style><script></script>
?<meta http-equiv=set-cookie content="testpokn=7494">
/_37040/
/clr_cream/
reg_req/
trackir3pro-1/
selector_10274/
javascript/orders.html
perlutil/
/carte_ameriques2/
/javascript/count.conf
/glow_chairs/
我想将此AS转换为csv文件。 1列,多行。文本文件的每一行都应该是csv文件中的一行。
的Python
def loadFile(name):
directory = os.getcwd()
filepath = directory + "/" + name
data = open(filepath,'r').readlines()
result = []
for d in data:
d = str(urllib.parse.unquote(d))
result.append(d)
return result
def main():
data = loadFile('code.txt')
with open('new.csv', 'w', newline='') as fp:
a = csv.writer(fp,)
a.writerows(data)
main()
我的问题是,对于每个字符,它都会添加一个逗号
答案 0 :(得分:0)
writerows
应使用列表或元组列表,例如[('bla', ), ('bla', )]
def main():
data = loadFile('code.txt')
with open('new.csv', 'w', newline='') as fp:
a = csv.writer(fp,)
a.writerows([(r, ) for r in data])
答案 1 :(得分:0)
错误的输出来自您writerows
的使用。它应该接收迭代(列)的可迭代(行)。当你给它一个字符串列表时,它将每个字符串作为可迭代的字符,因此输出。
一个简单的解决方法是loadFile
返回一个1元组的字符串列表:
def loadFile(name):
directory = os.getcwd()
filepath = directory + "/" + name
data = open(filepath,'r').readlines()
result = []
for d in data:
d = str(urllib.parse.unquote(d))
result.append((d,)) # result now contains 1-tuple of strings
return result
但无论如何,当你单独处理每一行时,如果对这个通用程序结构有更多的内存友好性:
with open(...) as ...
)for line in ...:
)循环输入文件