在Python字符串中拆分用户输入并添加字符
我有一个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]