Python 如何解析CSV文件并在第一列中按项搜索
我有一个超过4000行的CSV文件,格式如下 名称、价格、成本、数量Python 如何解析CSV文件并在第一列中按项搜索,python,Python,我有一个超过4000行的CSV文件,格式如下 名称、价格、成本、数量 如何修剪我的CSV文件,以便只保留我想要的20个名称?我能够解析/修剪CSV文件,但在如何搜索第1列方面我还是一片空白。您可以通过CSV.reader()进行循环。它将返回您的行。行由列表组成。比较列表的第一个元素即行[0]。如果这是您想要的,请将该行添加到输出列表。您可以创建一个ASCII测试文件,将20个名称中的每一个都放在单独的行上(可能称为目标名称)。然后,在命令行(bash)上使用CSV文件(可能称为file.CSV
如何修剪我的CSV文件,以便只保留我想要的20个名称?我能够解析/修剪CSV文件,但在如何搜索第1列方面我还是一片空白。您可以通过CSV.reader()进行循环。它将返回您的行。行由列表组成。比较列表的第一个元素即行[0]。如果这是您想要的,请将该行添加到输出列表。您可以创建一个ASCII测试文件,将20个名称中的每一个都放在单独的行上(可能称为目标名称)。然后,在命令行(bash)上使用CSV文件(可能称为file.CSV):
如果您在区分大小写方面有问题,请使用grep-i。使用
pandas
import pandas as pd
df = pd.DataFrame({'name': ['abc', 'ght', 'kjh'], 'price': [7,5,6], 'cost': [9, 0 ,2], 'quantity': [1,3,4]})
df = pd.read_csv('input_csv.csv') # Your case you would import like this
>>> df
cost name price quantity
0 9 abc 7 1
1 0 ght 5 3
2 2 kjh 6 4
>>> names_wanted = ['abc','kjh']
>>> df_trim = df[df['name'].isin(names_wanted)]
>>> df_trim
cost name price quantity
0 9 abc 7 1
2 2 kjh 6 4
然后将文件导出到csv:
>>> df_trim.to_csv('trimmed_csv.csv', index=False)
完成了 我不确定我是否理解您的意思,但是下面的代码片段可以满足您的需要吗
def FilterCsv(_sFilename, _aAllowedNameList):
l_aNewFileLines = []
l_inputFile = open(_sFilename, 'r')
for l_sLine in l_inputFile:
l_aItems = l_sLine.split(',')
if l_aItems[0] in _aAllowedNameList:
l_aNewFileLines.append(l_sLine)
l_inputFile.close()
l_outputFile = open('output_' + _sFilename, 'w')
for l_sLine in l_aNewFileLines:
l_outputFile.write(l_sLine)
l_outputFile.close()
希望这能有所帮助
def FilterCsv(_sFilename, _aAllowedNameList):
l_aNewFileLines = []
l_inputFile = open(_sFilename, 'r')
for l_sLine in l_inputFile:
l_aItems = l_sLine.split(',')
if l_aItems[0] in _aAllowedNameList:
l_aNewFileLines.append(l_sLine)
l_inputFile.close()
l_outputFile = open('output_' + _sFilename, 'w')
for l_sLine in l_aNewFileLines:
l_outputFile.write(l_sLine)
l_outputFile.close()