如何读取csv文件以获得没有列表但在普通字符串中的输出?

How to read csv file to get output without list but in normal String?

请问如何改代码得到输出:

Nigel;UK;19
John;US;22
Carol;Germany;26

没有这个输入(是列表吗?):

['Nigel', 'UK', '19']
['John', 'US', '22']
['Carol', 'Germany', '26']

代码:

import csv

with open('friends.csv', 'r') as source:
    reader = csv.reader(source)

    for line in reader:
        print(line)

我认为现在有一些说明,但我没有找到。
谢谢

尝试通过 * 运算符解压列表元素,并将自定义分隔符传递给 print:

import csv

with open('friends.csv', 'r') as source:
    reader = csv.reader(source)

    for line in reader:
        print(*line, sep=';')

结果:

Nigel;UK;19
John;US;22
Carol;Germany;26

一种更简单(也更有效)的方法是将文件内容作为字符串读入,然后用冒号替换所有逗号:

with open('friends.csv', 'r') as source:
    print(source.read().replace(',', ';'))

注意,这假设您的 friends.csv 内容如下:

Nigel,UK,19
John,US,22
Carol,Germany,26

你得到的输出是一个列表,因为 这就是 csv.reader() 所做的! 它读取 csv 文件的每一行,将其转换为列表并考虑逗号和转义规则,以及 returns 该列表。

如果您不关心 csv 文件的每个单独元素,只需将文件作为常规文件读取即可:

with open("filename.csv", "r") as f:
    for line in f:
        print(line, end="")

end="" 参数阻止 print() 添加自己的换行符,因为文件中的 line 已经包含换行符

或者,您仍然可以将其作为 csv 文件读取,但 str.join() 打印结果列表之前。如果您将 csv 文件的行用作其他地方的列表,请使用此选项,但您只想在此处打印文件

with open('friends.csv', 'r') as source:
    reader = csv.reader(source)
    for line in reader:
        print(";".join(line))