Mar*_*ius 1 python string formatting
我对python相当陌生。遵循此处的建议,试图强制使用一组双引号(例如,"my_string")输出字符串,但最终总是这样打印:"""my_string"""
知道为什么吗?
我试过:
'"' + my_string + '"'and
f'"{self.args["name"]}"'and str(my_string)and"\"" + my_String + "\""但同样的行为:
"""my_string"""
代码片段:
def print_out(self):
self.args = {}
self.args["name"] = 001
self.bla = 1
self.tra = 0
self.val = 0.12445
with open("my_file", "w") as fout:
tsv = csv.writer(fout, delimiter="\t")
tsv.writerow(["name", "bla", "tra", "hehe"])
tsv.writerow(
[f'"{self.args["name"]}"', self.bla, self.tra, round(self.val, 2)]
)
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,self.args["name"]打印为"""001"""
谢谢
CSV 文件有许多不同的方言。在最简单的形式中,它们只是一个由分隔符分隔的字符串列表。在这种情况下,您使用的是选项卡。
当您想要一个包含分隔符的值时,问题就开始了;那么您必须以某种方式转义选项卡以防止解析器将其视为此类。一种方法是引用整个字段。
但是现在,如何在字段的值中包含引号?默认情况下,您引用该字段并通过将它们加倍来转义文字引号。
因此,"001"成为"""001"""因为"001"必须引用该值,并且"每个文字都被替换为"". 解析器(使用这种默认方言)会看到"..."并去除最外面的引号,然后用单引号替换每对剩余的引号以"001"从"""001""".
似乎有多种方法可以禁用双引号的引用,您需要哪种方法可能取决于您使用的其他类型的数据。一种简单的方法是在创建 CSV 编写器时简单地将quotechar参数设置为None。
tsv = csv.writer(fout, delimiter="\t", quotechar=None)
Run Code Online (Sandbox Code Playgroud)
有关如何在 CSV 文件中引用和/或转义数据的详细信息,请参阅方言和格式参数。
演示:
>>> f = csv.writer(sys.stdout, delimiter="\t")
>>> f.writerow(["001", 3])
001 3
7
>>> f.writerow(['"001"', 3])
"""001""" 3
13
>>> f = csv.writer(sys.stdout, delimiter="\t", quotechar=None)
>>> f.writerow(["001", 3])
001 3
7
>>> f.writerow(['"001"', 3])
"001" 3
9
Run Code Online (Sandbox Code Playgroud)
(每次调用都f.writerow显示写入标准输出的数据,后跟其返回值。)
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |