我正在尝试在python中读取csv文件并从中构建数据框。 以下是我的csv文件中的一行示例:
| ab / 5(cd ef 6 | text1 / 123(lala | ghj)lal / 1234/567 |
我想切片行并将每个元素分配给一列。 该行应该看起来像数据框一样:
col1 | col2 | col3
ab/5 | (cd ef 6| text1/123 (lala | ghj)
在excel中打开文件时设置分发服务器毫无意义,因为有时候“|”出现在原地,在这种情况下不应拆分。 对于第一个元素ab / 5,我试图这样做:
with open('actions2.csv', 'r') as csvfile_actions2:
reader = csv.reader(csvfile_actions2)
for row in reader:
row2=row[0:23].split('|')
print(row2)
但是,发生错误:
AttributeError: 'list' object has no attribute 'split'
有没有人知道如何解决这个问题?
答案 0 :(得分:3)
这是实施拆分的错误方法。
你在阅读csv时应该进行“单元格”解析,而不是之后。对于python Xamarin.Forms
模块,方言支持custom delimiters。所以,你可以做到
var k: [Any] = [2,5,"Hello"]
var dict2: [String : Any] = [:]
dict2 = ["arr" : k ]
let arr = dict2["arr"] as! Array<Any>
print(arr[0])
csv
将为您完成所有解析和拆分,您将遍历已解析的列表
在文档中查找更多examples and recipes
答案 1 :(得分:1)
如果您打算手动分隔,则无需使用csv.reader
功能。您可以改为使用open
并在第一个“|”实例中拆分该行如下图所示:
with open('actions2.csv', 'r') as csvfile_actions2:
for row in csvfile_actions2:
row2 = row[0:23].split('|',1)
print(row2)
split('|',1)
函数只会在第一个'|'处拆分字符串字符。如果您要删除空格,也可以在.replace(' ','')
之前添加split
。
或者,如果你的csv文件只有3列而且额外的'|'字符只出现在第2列中,如示例所示,然后您可以在使用csv.reader
with open('actions2.csv', 'r') as csvfile_actions2:
reader = csv.reader(csvfile_actions2, delimiter='|')
for row in reader:
if len(row) == 4:
row = [row[0], row[1] + '|' + row[2], row[3]]
答案 2 :(得分:0)
试试这个: -
with open('actions2.csv') as f:
content = f.read()
comp_list = content.split("\n")[0:23]
for i in comp_list:
new_list = i.split("|")
print (new_list)