将CSV中的多个数据条目添加到Python中的1个字符串中

问题描述 投票:0回答:1

我在.csv文件中具有以下数据:

1,-100,phrase1
2,-100,phrase2
3,1,phrase3
4,-100,phrase4
5,1,phrase5

我想在找到-100时将所有“短语*”添加到一个字符串中,并用逗号分隔直到最后一个条目。到目前为止,我有以下内容:

import csv

output = []

with open('test_file.csv') as test_file:
    csv_reader_object = csv.reader(test_file)
    for expression_id, expression_weight, expression_phrase in csv_reader_object:
        expression_weight = int(expression_weight)

        if expression_weight == -100:
            output.append(expression_phrase)
            print(output)

我以为我可以遍历该列表,找到-100,将expression_phrase添加到一个列表,然后遍历该列表,并将所有表达短语添加到一个大字符串中。我正在寻找以下输出:

字符串=(短语1,短语2,短语4)

任何帮助/提示都值得赞赏。我的头一直在想解决这个问题。

python loops csv for-loop
1个回答
1
投票

您可以在python中通过过滤行并将结果加入逗号来紧凑地执行此操作。在这种情况下,将"-100"比较为字符串似乎可以,尽管在更复杂的情况下可能需要进行转换]

import csv

with open('test_file.csv') as test_file:
    final = ",".join(row[2] for row in csv.reader(test_file) if row[1] == "-100")
print(final)

如果要收集多个字符串,可以将其转换为for循环。

import csv

with open('test_file.csv') as test_file:
    phrases_1 = []
    phrases_2 = []
    for row in csv.reader(test_file):
        if row[1] == "-100":
            phrases_1.append(row[2])
        if row[0] == "1":
            phrases_2.append(row[2])
    return ",".join(phrases_1), ",".join(phrases_2)

您也可以再次选择第一个选项。您将花费更多的时间来解析csv,但我认为不会有太大的区别。

© www.soinside.com 2019 - 2024. All rights reserved.