我想用列表中的双引号替换单引号

时间:2017-02-12 02:06:42

标签: python string list python-3.x

所以我正在创建一个程序,它接受一个文本文件,将其分解为单词,然后将列表写入一个新的文本文件。

我遇到的问题是我需要列表中的字符串是双引号而不是单引号。

例如

当我需要['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项目中使用输出,要求列表有双引号。]

3 个答案:

答案 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。字符串和字节文字

     

...用简单的英语:两种类型的文字都可以用匹配的单引号(')或双引号(“)括起来。它们也可以用三个单引号或双引号的匹配组括起来(这些通常被引用作为三引号字符串。)反斜杠()字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引号字符......

“我遇到的问题是我需要列表中的字符串是双引号而不是单引号。” - 然后你需要让你的程序接受单引号,而不是试图用双引号替换单引号。