这是csv文件
name,country,code
Georgina,Saint Helena,ET
Brooks,Austria,LR
Rosaline,Peru,DZ如何在不循环整个csv文件的情况下获得特定的行数据?
查找以下语法:如果csv中存在searchName,则提取数据
searchName = 'Brooks'
with open('name.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
if (row['name']) == searchName :
print(row['name'] + ' >> ' + row['country'])谢谢
为感兴趣的人更新panda解决方案
import pandas as pd
df = pd.read_csv('a.csv')
select_row = df.loc[df['name'] == 'Brooks']
if select_row.empty:
print('No records')
else:
print('Print Record')
print(select_row.country)发布于 2020-05-16 17:12:12
获取第一个实例
search_name = 'Brooks'
with open('name.csv', 'r') as file:
output = re.search(f'{search_name}.*', file.read())
row = output.group().split(',')
print(row[0], '>>' ,row[1])获取所有实例
search_name = 'Brooks'
with open('name.csv', 'r') as file:
output = re.findall(f'{search_name}.*', file.read())
for row in output:
items = row.split(',')
print(items[0], '>>' ,items[1])使用DataFrames
import pandas as pd
search_name = 'Brooks'
df = pd.read_csv('name.csv')
output = df[df.name == search_name].iloc[0]
print(output['name'], '>>', output['country'])发布于 2020-05-16 16:21:31
你可以尝试使用熊猫,让你的生活变得更容易,试试这样的东西:
import pandas as pd
df = pd.read_csv('name.csv')
if df.iloc[5, 6]:
# execute condition
else
# execute another condition我已经给了你一个提纲,你可以试着用它来解决你的问题。
发布于 2020-05-16 17:17:11
虽然dataframe似乎是最好的选择,但如果您将csv视为一个简单的文本文件,这应该会对您有所帮助:
searchName = 'Brooks'
with open('name.csv', 'r') as f:
foo = f.read()
items=re.findall(f"{searchName}.*$",foo,re.MULTILINE)
print(items)输出:
['Brooks,Austria,LR']
https://stackoverflow.com/questions/61833728
复制相似问题