在Python中绕过许多字符串引用引号

时间:2016-07-27 08:10:27

标签: python

Afghanistan
Albania
Algeria
etc

我有一个国家列表,如上所述,从txt文件复制。我想创建一个名为countries的列表,其中包含所有这些条目,而不必逐个列表将报表中的每个条目包装起来并添加逗号。

如何以高效快捷的方式完成这项工作?

最终列表应如下所示:

countries = [
"Afghanistan",
"Albanian",
"Algeria"....
]

有些线条有2个以上的单独字符串,例如Puerto Rico。 splitlines()似乎将两个单词分开,而不是为每一行创建一个列表条目。

3 个答案:

答案 0 :(得分:2)

引号和逗号用于代码中指定为 literals 的列表和字符串。您不需要以编程方式阅读的数据。

只需读取线条并剥离拖尾换行符。

with open('countries.text') as src:
    countries = [row.strip('\n') for row in src]

答案 1 :(得分:1)

你不需要为每个条目添加引号和逗号,只需用三引号括起来然后拆分它。

text = \
'''
Afghanistan
Albania
Algeria
'''
my_list = []
for line in text.strip().split('\n'):
    my_list.append(line)

print my_list
['Afghanistan', 'Albania', 'Algeria']

或紧凑版:

my_list = \
'''
Afghanistan
Albania
Algeria
'''.split()

答案 2 :(得分:0)

假设您的输入为test.txt,并且您希望在out.txt中输出:

if __name__ == '__main__':
    with open('test.txt', 'rb') as fr:
        reader = fr.readlines()
        with open('out.txt', 'wb') as fw:
            for line in reader:
                fw.write('\''+line.strip('\n').strip('\r')+'\'\n')

这将写入out.txt

'Afghanistan'
'Albania'
'Algeria'
'etc'

或者如果你想把它放在一个列表中:

if __name__ == '__main__':
    with open('test.txt', 'rb') as fr:
        reader = fr.readlines()
        res = list()
        for line in reader:
            res.append(line.strip('\n').strip('\r'))

最后,我们有

res = ['Afghanistan', 'Albania', 'Algeria', 'etc']