-1

我想问一下如何更改代码以获取输出:

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)

我认为现在存在一些针对它的说明,但我没有找到它。
谢谢

4

2 回答 2

0

尝试通过运算符解包列表元素*,并将自定义分隔符传递给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
于 2021-10-26T20:51:20.227 回答
0

你会得到一个列表的输出,因为这就是csv.reader()它的作用!它读取 csv 文件的每一行,将其转换为考虑逗号和转义规则的列表,然后返回该列表。

如果您不关心 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))
于 2021-10-26T20:51:44.040 回答