CSV标题,分割后有的以"(A)"结尾,有的以"ABC"结尾,有的以"hjhj []"结尾。请问是如何用Python进行分列的?
时间: 2023-07-19 17:23:52 浏览: 62
如果你的CSV文件中的标题以不同的方式结尾,你可以使用Python中的字符串方法和正则表达式对标题进行分列。以下是一个示例代码,可以将包含不同结尾的标题分列:
``` python
import csv
import re
# 打开CSV文件并读取其中的数据
with open('file.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
# 循环读取每一行数据
for row in csv_reader:
# 将包含不同结尾的标题分列
for i in range(len(row)):
# 判断标题以"(A)"结尾
if row[i].endswith("(A)"):
title = row[i][:-3].strip()
column_a = "A"
# 将分列后的数据存储到新的列表中
new_row = [title, column_a]
# 判断标题以"ABC"结尾
elif row[i].endswith("ABC"):
title = row[i][:-3].strip()
column_a = "B"
# 将分列后的数据存储到新的列表中
new_row = [title, column_a]
# 判断标题以"hjhj []"结尾
elif re.search(r'hjhj\s*\[\]', row[i]):
match = re.search(r'(.*?)\s*\[\]', row[i])
title = match.group(1).strip()
column_a = "C"
# 将分列后的数据存储到新的列表中
new_row = [title, column_a]
# 如果标题不以以上结尾方式之一结尾,则直接将其存储到新的列表中
else:
new_row = [row[i], ""]
# 写入更新后的行数据到新的CSV文件中
with open('new_file.csv', 'a', newline='') as new_csv_file:
csv_writer = csv.writer(new_csv_file)
csv_writer.writerow(new_row)
```
在上面的代码中,我们首先打开CSV文件并读取其中的数据。然后,对于每一行数据,我们使用字符串方法和正则表达式对包含不同结尾的标题进行分列。具体来说:
- 如果标题以"(A)"结尾,我们使用`endswith()`函数判断其结尾,并使用`strip()`函数去除标题中的空格和括号。然后,我们将分列后的标题存储到新的列表中,并将"A"作为第二列数据存储到新的CSV文件中。
- 如果标题以"ABC"结尾,我们同样使用`endswith()`函数判断其结尾,并使用`strip()`函数去除标题中的空格和字母。然后,我们将分列后的标题存储到新的列表中,并将"B"作为第二列数据存储到新的CSV文件中。
- 如果标题以"hjhj []"结尾,我们使用正则表达式`re.search()`函数匹配标题中的正则表达式,并使用`group()`函数获取匹配到的标题。然后,我们将分列后的标题存储到新的列表中,并将"C"作为第二列数据存储到新的CSV文件中。
- 如果标题不以以上结尾方式之一结尾,则直接将其存储到新的列表中,并将第二列数据留空。
最后,我们将更新后的行数据写入到新的CSV文件中,以便进行进一步处理。
阅读全文