所以我正在创建一个程序,它接受一个文本文件,将其分解为单词,然后将列表写入一个新的文本文件。
我遇到的问题是我需要列表中的字符串是双引号而不是单引号。
例如
当我需要['dog','cat','fish']
["dog","cat","fish"]
这是我的代码
with open('input.txt') as f:
file = f.readlines()
nonewline = []
for x in file:
nonewline.append(x[:-1])
words = []
for x in nonewline:
words = words + x.split()
textfile = open('output.txt','w')
textfile.write(str(words))
我是python的新手,并且没有发现任何相关信息。 有谁知道如何解决这个问题?
[编辑:我忘了提到我在arduino项目中使用输出,要求列表有双引号。]
答案 0 :(得分:15)
您无法更改str
的{{1}}工作方式。
如何使用JSON format使用list
作为字符串。
"
>>> animals = ['dog','cat','fish']
>>> print(str(animals))
['dog', 'cat', 'fish']
>>> import json
>>> print(json.dumps(animals))
["dog", "cat", "fish"]
答案 1 :(得分:5)
您很可能只想通过替换输出中的双引号替换单引号:
str(words).replace("'", '"')
你可以扩展Python的str
类型,并使用新类型换行__repr__()
方法来使用双引号而不是单引号来包装字符串。不过,使用上面的代码更简单,更明确。
class str2(str):
def __repr__(self):
# Allow str.__repr__() to do the hard work, then
# remove the outer two characters, single quotes,
# and replace them with double quotes.
return ''.join(('"', super().__repr__()[1:-1], '"'))
>>> "apple"
'apple'
>>> class str2(str):
... def __repr__(self):
... return ''.join(('"', super().__repr__()[1:-1], '"'))
...
>>> str2("apple")
"apple"
>>> str2('apple')
"apple"
答案 2 :(得分:2)
在Python中,双引号和单引号是相同的。他们之间没有什么不同。并且没有必要用双引号替换单引号,反之亦然:
2.4.1。字符串和字节文字
...用简单的英语:两种类型的文字都可以用匹配的单引号(')或双引号(“)括起来。它们也可以用三个单引号或双引号的匹配组括起来(这些通常被引用作为三引号字符串。)反斜杠()字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引号字符......
“我遇到的问题是我需要列表中的字符串是双引号而不是单引号。” - 然后你需要让你的程序接受单引号,而不是试图用双引号替换单引号。