【问题标题】:Checking CSV data for integer then removing that int检查 CSV 数据中的整数,然后删除该整数
【发布时间】:2021-04-29 19:41:37
【问题描述】:

希望从使用 Python 3.8 的 Excel 提取的 CSV 文件中拆分并检查单个单元格。例如,我有一个 CSV 文件,其中包含信息 Honda 1, Toyota 2, Nissan 3... 我想检查每个单元格(不知道在逗号分隔符之前调用什么数据)是否有一个整数,然后我想删除它,但也把它放在自己的细胞。因此 CSV 将读取 Honda, 1, Toyota, 2, Nissan, 3... 主要目标是在 Excel 中的制造商旁边的列中获取这些整数。

我对 python 很陌生,但有一些编码背景。我正在考虑的逻辑类似于,如果 char 是 int 然后添加到新文件,否则添加 N/A。我的主要问题是使用 csv 文件中的数据来执行此操作。我曾考虑将 csv 中的数据放入一个变量中,但真正的 csv 文件有超过 20,000 个单元格,所以我不确定这是否会非常有效。

到目前为止,我的代码如下所示:

import csv

path = '/Users/testFolder/Test.csv'
new_path = '/Users/testFolder/Test2.csv'

test_file = open(path,'r')
data = test_file.read()

write_file = open(new_path,'w')
write_file.write(data)
print(data)

file = csv.reader(open(path), delimiter = ',')
for line in file:
    print(line)

test_file.close()
write_file.close()

【问题讨论】:

  • 你能从其中一个文件中给出几行吗?还是只有一行包含所有条目?
  • 基本上所有数据都在一行中,如果是在excel中,它将全部在一行中,每个逗号都是一个新列

标签: python excel csv


【解决方案1】:

假设每个项目的部分由一个或多个空格分隔,您可以像这样逐行执行(而不是将整个文件读入内存):

import csv

path = 'remove_test.csv'
new_path = 'remove_test2.csv'

with open(path, 'r', newline='') as test_file, \
     open(new_path, 'w', newline='') as write_file:

    reader = csv.reader(test_file, delimiter=',')
    writer = csv.writer(write_file, delimiter=',')

    for row in reader:
        new_row = [part for item in row for part in item.split()]
        writer.writerow(new_row)

【讨论】:

  • @ssumme:这能回答你的问题吗?
  • 谢谢,这真的很有帮助!所以这对我的数据所做的就是在每个单词之后添加一个逗号,例如最初它是“Honda 1”现在它是“Honda, 1”所以现在我只需要弄清楚如何通过 csv 以及每当有int 将其添加到新文件中,如果没有 int 添加 N/A。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2014-06-11
  • 2016-10-18
  • 2018-06-20
相关资源
最近更新 更多