处理 Python 3 输入函数中的转义字符?

问题描述 投票:0回答:1

我正在尝试运行一个程序,该程序将输入纸牌游戏卡,将它们附加到列表中,然后将文件导出为 .txt 文件和 .csv 文件。该程序可以运行,但是无法处理名称中带有逗号的卡片。

例如这个函数:

def card_adder(list):
    next_one = str(input("ADD: "))
    copies = input("How many? ")

    for i in range(int(copies)):
        list.append(next_one)

看起来像:

ADD:树栖食草动物
多少? 4
牌组中目前有 4 张牌。
添加:Azusa,迷失但寻求
多少? 1
牌组中目前有 5 张牌。

当程序到达指定数量的主牌和备牌(共75张)时,它将运行导出器功能:

def exporter():
    ...
    deckname = input("Deck name: ")
    deck = open(f"{deckname}.txt, "w")
    for card in seventyfive:
        deck.write(card+"\n")
    deck.close()

    read_file = pd.read_csv (fr'C:\\Users\\[User]\\{deckname}.txt' error_bad_lines=False
    read_file.to_csv (fr'C:\\Users\\[User]\\{deckname}.csv', index=None)

但是,这会在终端中产生以下错误:

b'跳过第 5 行:预期 1 个字段,看到 2 个 跳过第 29 行:预期 1 个字段,看到 2 个 跳过第 30 行:预期 1 个字段,看到 2 个 跳过第 48 行:预期 1 个字段,看到 2 个 跳过第 58 行:预期 1 个字段,看到 2 个 跳过第 59 行:预期 1 个字段,看到 2 个 '

上面跳过的每一行都是输入的卡片名称,名称中包含一个逗号。它将成功导出文件,但会跳过名称中带有逗号的每张卡片并保存不完整的牌组列表。

关于如何解决此问题以允许用户输入包含逗号的卡名称的任何建议?提前致谢!

python-3.x list escaping user-input export-to-csv
1个回答
0
投票

之前发布的解决方案实际上是错误的,但是我发现问题是在 pd.read_csv 和 read_file.to_csv 行中默认使用逗号作为分隔符。我将分隔符更改为“|”,它从未出现在这些卡片名称中,程序现在可以毫无问题地接受包含逗号的用户输入。

© www.soinside.com 2019 - 2024. All rights reserved.