你们对我最后一个新手问题非常有帮助所以我想我会再拍一次。现在,我的Python 3代码从CSV文件中获取数据,将数据存储为列表,创建该数据的排列,然后将其导出回列格式的新csv文件中。不幸的是,导出列表的格式并不是我所需要的最佳格式。我的问题是:如何从python中导出的列表中删除逗号,括号和括号?
现在看起来如何:
('你好','世界','怎么')
('你好','世界','是')
('你好','怎么','世界')
我希望看起来如何:
Hello World How
Hello World Are
你好世界
以下是我使用的代码,是否有人有任何建议或建议?我正在努力学习,所以任何额外的见解都会非常感激!
import csv
import itertools
with open('/users/Desktop/pythondata.csv', 'r') as f:
reader = csv.reader(f)
J = []
for row in reader:
J.extend(row)
C = list(itertools.permutations(J, 3))
with open('THISISATEST.csv','w')as f:
writer=csv.writer(f,lineterminator='\n')
for val in C:
writer.writerow([val])`
P.S。 - 如果格式不正确,请原谅我,我是新手!
答案 0 :(得分:3)
我建议您只使用join
方法获取您要查找的单个字符串。你可以尝试:
with open('test.csv', 'w') as a_file:
for result in C:
result = ' '.join(result)
a_file.write(result + '\n')
基本上,调用字符串join
(单个空格)的' '
方法将获取其参数中的每个项目(来自排列的单个结果)并将它们一起添加到单个字符串中由第一个字符串(单个空格)分隔。 This site给出了一个简单的说明性示例。
使用语法join
调用'[separator]'.join([list of items to join])
方法,因此如果您只想将所有内容混合成一个没有空格的字符串,则可以在空字符串上调用它:{{1} }。
由于您不需要逗号分隔文件(CSV),因此只需使用''.join([my list])
方法即可简化操作。如果您在此代码中使用CSV编写器,则每个字母之间都会显示逗号。
答案 1 :(得分:2)
我不知道您是否了解正则表达式,但使用python的“re”模块应该可以为您提供所需内容:
import re
strs = "('Hello', 'World', 'How')"
#creates list of strings that match the regular expression
words = re.findall(r"\'([A-Za-z]+)\'", strs)
#joins all of the elements of the word array into a string separated by a space
outputString = " ".join(words)
#output is "Hello World How"
print outputString
答案 2 :(得分:1)
因为你有元组,所以有一种更简单的方法。您不需要csv
来导出以空格分隔的文件。
import csv
import itertools
with open('pythondata.csv', 'r') as f:
reader = csv.reader(f)
J = []
for row in reader:
J.extend(row)
C = itertools.permutations(J, 3)
with open('THISISATEST.txt','w') as f:
f.write('\n'.join(' '.join(y for y in x) for x in C))
答案 3 :(得分:0)
如果还有人在尝试这个时仍在搜索,(python 3.x)。 我的目标是在单独的行上列出所有可能的9位数字排列。
第string = ''.join(str(char) for char in line)
行是获胜者
import sys, itertools
f = open('path to file', 'w') #I was using a .txt file
permutations = (list(itertools.permutations([1,2,3,4,5,6,7,8,9], 9)))
for line in permutations:
string = ''.join(str(char) for char in line)
f.write(string + '\n')
f.close()