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

问题描述:

因此,我正在制作一个程序,它接受一个文本文件,将其分解成单词,然后将列表写入新的文本文件。我想用一个列表中的双引号替换单引号

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

例如

我得到这个['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)) 

我是新来的蟒蛇并没有发现这事。 任何人都知道如何解决这个问题?

[编辑:我忘了提,我用在需要的列表,以便在双引号一个Arduino项目输出]

+0

['狗','猫','鱼']与[狗,猫,鱼]是相同的,引号只是为了将琴弦弄湿。引号不是字符串的一部分。尝试打印(字[0]),你会明白 –

+6

“我遇到的问题是我需要在列表中的字符串与双引号不单引号。” - 为什么?你打算如何处理这个需要双引号的文件?你想输出JSON还是什么? (如果是这样,那么有一个[模块](https://docs.python.org/3/library/json.html)。) – user2357112

+0

请显示输入文件。 – merlin2011

你不能改变如何str作品list

如何使用JSON format使用"作为字符串。

>>> animals = ['dog','cat','fish'] 
>>> print(str(animals)) 
['dog', 'cat', 'fish'] 

>>> import json 
>>> print(json.dumps(animals)) 
["dog", "cat", "fish"] 

import json 

... 

textfile.write(json.dumps(words)) 
+0

感谢您回答我的问题,非常感谢。 – ThatsOkay

+0

'json.dumps('dog')''输出''“狗”''到文件但我想''狗'''。怎么做? – chandresh

+0

@chandresh,打印出来。周围有单引号,表示对象是字符串。 (这就是'repr'表示的方式)。如果你打印它(或写入文件,...),你会得到你想要的。 – falsetru

如果你想双引号添加到开始和串并做到这一点:

words = ['"'+word+'"' for word in words] 

你的名单将是这样的:

['"dog"', '"cat"', '"fish"'] 
+0

不是OP的问题 –

在Python中,双引号和单引号是相同的。他们之间没有什么不同。并且没有必要用双引号替换单引号,反之亦然:

2.4.1。字符串和字节文字

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

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

最有可能你会想仅仅通过更换他们更换单引号与您的输出双引号:

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"