在Python字符串中拆分用户输入并添加字符

0 投票
1 回答
1583 浏览
提问于 2025-04-18 08:45

我有一个Python脚本,可以接受用户输入(通过条形码扫描),然后生成一个包含用户所有数据的CSV文件。这个CSV文件接着会用来生成Crystal Report。

输入的内容是一个由空格分隔的字符串,里面包含了三个部分:物品编号、批次编号和数量。

    Example: G00177 LOT12345 24

不过,问题是物品编号或者批次编号有可能是数字,而不是字符串:

    Example 1: G00177 12345 24
    Example 2: 00177 12345 24

我想的办法是在物品编号和批次编号的开头加一个字符,这样就强制它们变成字符串,然后在Crystal中自动去掉这个添加的字符。

到目前为止,我只成功在物品编号的开头加了一个字符,但批次编号还没能做到。我也不想在数量字段前加字符,因为数量总是数字。

任何批评、见解或建议都非常感谢。

我刚开始学习Python,知道我的方法可能不是最好。

谢谢你的时间。

1 个回答

0

你可以试试这样的做法:

report_one = '00177 12345 24'
report_two = 'G0177 12345 24'
report_three = 'G0177 I2345 24'

def convert(original):
    s = original.split()
    for i in range(2):       # 2 is used here because that's how many 'words'
        try:                 #     we want to check for numeric-ness. This can
            int(s[i])        #     be adjusted if you have to change your schema
        except ValueError:   #     at some point in the future.
            s[i] += 'S'
    return ' '.join(s)

print convert(report_one)    # Prints 00177 12345 24
print convert(report_two)    # Prints G0177S 12345 24
print convert(report_three)  # Prints G0177S I2345S 24

这段代码首先把字符串拆分成一个个单词。你知道第一个和第二个单词可能是整数,而你需要一种方法让下一个系统把它们理解为字符串。

利用拆分出来的单词,在一个 try 块中把单词转换成 int 类型,如果这个字符串不是整数,就会抛出一个 ValueError 错误。也就是说,如果字符串里有字母,except ValueError 这部分就会被触发。到那时,你可以简单地在单词的末尾加一个字母,然后让下一个系统检查这个单词的结尾字母(在我的例子中,我用了 'S')。

如果你想在开头加一个字母,可以把 s[i] += 'S' 替换成:s[i] = 'S' + s[i]

撰写回答